java – 使用EJB3 / Hibernate时未在Apache Derby中自动创建的表
发布时间:2020-12-15 02:26:40 所属栏目:Java 来源:网络整理
导读:我有一个EJB3实体bean播放器,注释如下: @Entity@Table(name = "PLAYER")public class Player { public Player() { super(); } @Id @GeneratedValue private String id; @Column(nullable = false) private String firstName; private String lastName; publ
我有一个EJB3实体bean播放器,注释如下:
@Entity @Table(name = "PLAYER") public class Player { public Player() { super(); } @Id @GeneratedValue private String id; @Column(nullable = false) private String firstName; private String lastName; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } } 我正在使用Apache Derby DB来坚持这一点.我有一个persistence.xml文件,它解释了hibernate属性,我定义了hibernate.hbm2ddl.auto = create. <persistence xmlns="http://java.sun.com/xml/ns/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"> <persistence-unit name="PlayerApp" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <class>com.cricinfo.domain.Player</class> <properties> <property name="hibernate.connection.driver_class" value="org.apache.derby.jdbc.ClientDriver" /> <property name="hibernate.dialect" value="org.hibernate.dialect.DerbyDialect"/> <property name="hibernate.hbm2ddl.auto" value="create" /> <property name="hibernate.connection.url" value="jdbc:derby://localhost:1527/PlayerAppDB;create=true" /> <property name="hibernate.show_sql" value="true" /> <property name="hibernate.format_sql" value="true" /> </properties> </persistence-unit> 但是当我试图坚持这个对象时,我得到一个例外 Caused by: org.apache.derby.client.am.SqlException: Table/View 'PLAYER' does not exist. at org.apache.derby.client.am.Statement.completeSqlca(Unknown Source) 是不是应该自动创建表,因为我已经设置了属性hibernate.hbm2ddl.auto?或者有什么我想念的东西? 我的主要方法如下图所示: public static void main(String[] args) { Player p = new Player(); p.setFirstName("A"); p.setLastName("BC"); EntityManagerFactory factory = Persistence.createEntityManagerFactory("PlayerApp"); EntityManager entityMgr = factory.createEntityManager(); EntityTransaction tx = entityMgr.getTransaction(); tx.begin(); entityMgr.persist(p); tx.commit(); entityMgr.close(); factory.close(); } 解决方法
添加以下属性
<property name="hibernate.generateDdl" value="true" /> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |