1

我希望 JPAContainer 在 'hbm2ddl.auto' 设置为 'update' 时自动创建一个数据库表,但情况似乎并非如此。我的配置有问题还是我应该使用其他东西来获得所需的功能?

我正在使用以下命令创建 JPAContainer

accounts = JPAContainerFactory.make(Account.class, RumUI.PERSISTENCE_UNIT);

Accounts 类是

@Entity
@Table(name="accounts")    
public class Account implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(generator="increment")
    @GenericGenerator(name="increment", strategy = "increment")
    private Long id;

    @NotNull
    @Size(min = 2, max = 24)
    @Column(name = "name", unique=true)
    private String name;

    @NotNull
    @Email
    @Column(name = "email")
    private String email;

    @NotNull
    @Size(min = 2, max = 24)
    @Column(name = "password")
    private String password;

    @NotNull
    @Column(name = "role")
    private String role;

    public Account() {
    }

    //getters and setters

}

还有persistence.xml

<persistence-unit name="RuM">
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <class>ee.ut.cs.rum.domain.Account</class>
        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
            <property name="hibernate.connection.url" value="jdbc:postgresql://127.0.0.1:5432/RuM"/>
            <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/>
            <property name="hibernate.connection.username" value="postgres"/>
            <property name="hibernate.connection.password" value="postgres"/>
            <property name="hibernate.show_sql" value="true"/>
            <property name="hibernate.format_sql" value="true"/>
            <property name="hbm2ddl.auto" value="update"/>
            <property name="hibernate.current_session_context_class" value="thread" />
        </properties>
    </persistence-unit>

我希望数据库表“accounts”会自动创建,因为“hbm2ddl.auto”设置为“update”。但是没有创建表。

如果我使用相同的设置(使用 Configuration 对象)直接创建 Hibernate ServiceRegistry 和 SessionFactory,则创建表。

我在这里想念什么?

4

2 回答 2

0

@Entity @Table(name="t_accounts) 公共类账户……</p>

于 2015-04-12T03:26:22.620 回答
0

org.hibernate.ejb.HibernatePersistence 你可以试试这个提供者

于 2015-04-12T03:31:07.063 回答