JPAContainerFactory不会创建数据库表

时间:2015-04-12 01:11:52

标签: hibernate postgresql vaadin vaadin7 jpacontainer

我希望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>

我希望自“hbm2ddl.auto”设置为“update”后,将自动创建数据库表'accounts'。但是,表格未创建。

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

我在这里缺少什么?

2 个答案:

答案 0 :(得分:0)

@Entity @table(名称=&#34; t_accounts) 公共课Accout ......

答案 1 :(得分:0)

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