如何从jpa 2.1的persistence.xml生成表模式?

时间:2014-09-06 12:37:17

标签: hibernate jpa persistence.xml

我尝试使用eclipse和wildfly 8.1生成包含脚本文件的表模式 这是我的persistence.xml文件。

<?xml version="1.0" encoding="UTF-8"?>

<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
 version="2.1">

<persistence-unit name="MyFamily">
  <jta-data-source>java:jboss/datasources/MySqlDS</jta-data-source>

  <properties>
   <property name="hibernate.show_sql" value="true"/>
   <property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
   <property name="javax.persistence.schema-generation.create-source" value="script-then-metadata"/>
   <property name="javax.persistence.schema-generation.create-database-schemas" value="true"/>
   <property name="javax.persistence.schema-generation.scripts.drop-script-source" value="META-INF/drop-script.jdbc"/>
   <property name="javax.persistence.schema-generation.scripts.create-script-source" value="META-INF/create-script.jdbc"/>
   <property name="javax.persistence.sql-load-script-source" value="META-INF/load-script.jdbc"/>
   <property name="org.hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
  </properties>
 </persistence-unit>
</persistence>

这些是实体源和脚本文件。

===实体

@Entity
@EntityListeners(Alarm.class)
@Table(name="family", indexes={@Index(columnList="EMP_ID"), @Index(columnList="EMP_NAME")})
public class Members implements Serializable {

 @Id
 @Column(name = "EMP_ID")
 private String ID;

 @Column(name = "EMP_Passwd")
 private String Passwd;

 @Column(name = "EMP_Age")
 private int Age;

 @Column(name = "EMP_Name")
 private String Name;

=== create-script.jdbc

CREATE TABLE family (
   EMP_ID VARCHAR(255) NOT NULL,
   EMP_PASSWD VARCHAR(255) NOT NULL,
   EMP_AGE INT NOT NULL,
   EMP_NAME VARCHAR(255) NOT NULL,

   PRIMARY KEY(EMP_ID)
)

但是部署会引发以下异常:

15:05:58,728 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 55) MSC000001: Failed to start service jboss.persistenceunit."EJBLoginEAR.ear/EJBLoginModule.jar#MyFamily": org.jboss.msc.service.StartException in service jboss.persistenceunit."EJBLoginEAR.ear/EJBLoginModule.jar#MyFamily": javax.persistence.PersistenceException: Schema generation configuration indicated to include CREATE scripts, but no script was specified
 at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:172) [wildfly-jpa-8.1.0.Final.jar:8.1.0.Final]
 at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:117) [wildfly-jpa-8.1.0.Final.jar:8.1.0.Final]
 at java.security.AccessController.doPrivileged(Native Method) [rt.jar:1.7.0_60]
 at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:474)
 at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:182) [wildfly-jpa-8.1.0.Final.jar:8.1.0.Final]
 at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [rt.jar:1.7.0_60]
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [rt.jar:1.7.0_60]
 at java.lang.Thread.run(Unknown Source) [rt.jar:1.7.0_60]
 at org.jboss.threads.JBossThread.run(JBossThread.java:122)
Caused by: javax.persistence.PersistenceException: Schema generation configuration indicated to include CREATE scripts, but no script was specified
 at org.hibernate.jpa.internal.schemagen.JpaSchemaGenerator$Generation.buildCreateSourceList(JpaSchemaGenerator.java:284) [hibernate-entitymanager-4.3.5.Final.jar:4.3.5.Final]
 at org.hibernate.jpa.internal.schemagen.JpaSchemaGenerator$Generation.execute(JpaSchemaGenerator.java:133) [hibernate-entitymanager-4.3.5.Final.jar:4.3.5.Final]
 at org.hibernate.jpa.internal.schemagen.JpaSchemaGenerator.performGeneration(JpaSchemaGenerator.java:76) [hibernate-entitymanager-4.3.5.Final.jar:4.3.5.Final]
 at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:857) [hibernate-entitymanager-4.3.5.Final.jar:4.3.5.Final]
 at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:843) [hibernate-entitymanager-4.3.5.Final.jar:4.3.5.Final]
 at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:397) [hibernate-core-4.3.5.Final.jar:4.3.5.Final]
 at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:842) [hibernate-entitymanager-4.3.5.Final.jar:4.3.5.Final]
 at org.jboss.as.jpa.hibernate4.TwoPhaseBootstrapImpl.build(TwoPhaseBootstrapImpl.java:44) [jipijapa-hibernate4-3-1.0.1.Final.jar:]
 at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:154) [wildfly-jpa-8.1.0.Final.jar:8.1.0.Final]
 ... 8 more

15:05:58,731 ERROR [org.jboss.as.controller.management-operation] (DeploymentScanner-threads - 2) JBAS014613: Operation ("full-replace-deployment") failed - address: ([]) - failure description: {"JBAS014671: Failed services" => {"jboss.persistenceunit.\"EJBLoginEAR.ear/EJBLoginModule.jar#MyFamily\"" => "org.jboss.msc.service.StartException in service jboss.persistenceunit.\"EJBLoginEAR.ear/EJBLoginModule.jar#MyFamily\": javax.persistence.PersistenceException: Schema generation configuration indicated to include CREATE scripts, but no script was specified
    Caused by: javax.persistence.PersistenceException: Schema generation configuration indicated to include CREATE scripts, but no script was specified"}}

如何在Wildfly 8中使用persistence.xml的脚本文件生成数据库模式?

0 个答案:

没有答案