我希望 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,则创建表。
我在这里想念什么?