Java 从定义的实体在PostgreSQL数据库中自动生成表

Java 从定义的实体在PostgreSQL数据库中自动生成表,java,postgresql,jpa,eclipselink,Java,Postgresql,Jpa,Eclipselink,我一直在使用ApacheDerby作为学校项目的数据库,但我想在我的新个人项目中切换到PostgreSQL,因为据我所知,它在生产环境中要好得多。我正在创建一个在Paraya服务器上运行的带有Jersey的RESTAPI 在我的上一个项目中,使用ApacheDerby数据库,所有表都是从部署时的实体自动创建的。但是,我无法将其用于PostgreSQL数据库。这是不可能的还是我做错了什么?如果我做的不正确,我会猜测错误在persistence.xml文件中(可能在glassfish-resourc

我一直在使用ApacheDerby作为学校项目的数据库,但我想在我的新个人项目中切换到PostgreSQL,因为据我所知,它在生产环境中要好得多。我正在创建一个在Paraya服务器上运行的带有Jersey的RESTAPI

在我的上一个项目中,使用ApacheDerby数据库,所有表都是从部署时的实体自动创建的。但是,我无法将其用于PostgreSQL数据库。这是不可能的还是我做错了什么?如果我做的不正确,我会猜测错误在persistence.xml文件中(可能在glassfish-resources.xml文件中)

persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
             version="2.0" xmlns="http://java.sun.com/xml/ns/persistence">
    <persistence-unit name="WikiDB" transaction-type="JTA">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <properties>
            <property name="javax.persistence.target-database" value="PostgreSQL" />
            <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/wiki"/>
            <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/>
            <property name="javax.persistence.jdbc.user" value="john.blaberg"/>
            <property name="javax.persistence.jdbc.password" value=""/>
            <property name="eclipselink.ddl-generation" value="create-or-extend-tables"/>
            <property name="eclipselink.ddl-generation.output-mode" value="database"/>
        </properties>
    </persistence-unit>
</persistence>

部署应用程序时,我没有收到任何错误消息。

您没有将问题缩小到特定主题。相反,提出了许多问题。我想您已经知道正确的jpa描述符文件是persistence.xml(不是persistence)。关于事务,您应该使用@Transactional注释您的相关方法。首先考虑将问题编辑到您的主要问题。我的主要问题是在架构中没有创建表,但我不太清楚为什么。这就是为什么我在问题中包含了这么多信息。你认为它与persistence.xml文件有关吗?我将把问题编辑成这样。那么,如果在部署应用程序之前没有创建db/schema/实体,你希望应用程序本身将创建它们吗?你看过这个@BaraKanske吗?没错!我希望应用程序根据我的实体生成表。我已经能够用ApacheDerby做到这一点,但在切换到PostgreSQL之后就不行了。我查看了链接,但不幸的是,这不起作用。您没有将问题缩小到特定的主题。相反,提出了许多问题。我想您已经知道正确的jpa描述符文件是persistence.xml(不是persistence)。关于事务,您应该使用@Transactional注释您的相关方法。首先考虑将问题编辑到您的主要问题。我的主要问题是在架构中没有创建表,但我不太清楚为什么。这就是为什么我在问题中包含了这么多信息。你认为它与persistence.xml文件有关吗?我将把问题编辑成这样。那么,如果在部署应用程序之前没有创建db/schema/实体,你希望应用程序本身将创建它们吗?你看过这个@BaraKanske吗?没错!我希望应用程序根据我的实体生成表。我已经能够用ApacheDerby做到这一点,但在切换到PostgreSQL之后就不行了。我查看了链接,但不幸的是,这不起作用。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE resources PUBLIC "-//Payara.fish//DTD Payara Server 5 Resource Definitions//EN"
        "https://raw.githubusercontent.com/payara/Payara-Server-Documentation/master/schemas/payara-resources_1_6.dtd">
<resources>
    <jdbc-connection-pool datasource-classname="org.postgresql.ds.PGConnectionPoolDataSource"
                          res-type="javax.sql.ConnectionPoolDataSource">
        <property name="serverName" value="localhost"/>
        <property name="portNumber" value="5432"/>
        <property name="databaseName" value="wiki"/>
        <property name="Account Name" value="test_username"/>
        <property name="Password" value="test_password"/>
        <property name="driverClass" value="org.postgresql.Driver"/>
    </jdbc-connection-pool>
    <jdbc-resource enabled="true" jndi-name="jdbc/wiki"
                   object-type="user" pool-name="PostPool"/>
</resources>

@Data
@Entity
@NoArgsConstructor
public class Brand {
    @Id @GeneratedValue
    private Long id;
    private String brandName;

    public Brand(String brandName){
        this.brandName = brandName;
    }
}