2013-05-04 19 views
2

我想自動插入數據到我的MySQL表中。因此,我嘗試在我的的persistence.xml使用JPA屬性「javax.persistence.sql負載腳本源」:如何使用javax.persistence.sql-load-script-source?

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.0" 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"> 
    <persistence-unit name="my-PU" transaction-type="JTA"> 
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
    <jta-data-source>jdbc/coding</jta-data-source> 
    <exclude-unlisted-classes>false</exclude-unlisted-classes> 
    <properties> 
     <property name="eclipselink.ddl-generation" value="drop-and-create-tables" /> 
     <property name="javax.persistence.ddl-drop-script-source" value="drop.sql" /> 
     <property name="javax.persistence.sql-load-script-source" value="insert.sql"/> 
    </properties> 
    </persistence-unit> 
</persistence> 

的SQL腳本(drop.sql中& insert.sql)是店在「src/main/resources」中包含SQL命令。不幸的是,這些命令不會被執行。我忘記了一個物業嗎?

回答

2

您使用的是什麼版本的EclipseLink?這些屬性是JPA 2.1的一部分,因此您必須使用EclipseLink 2.5版本(尚未發佈)。

啓用日誌記錄功能以查看是否有錯誤發生。

0

我認爲問題在於房產的價值。您必須設置相對於src的位置。事情是這樣的:

<properties> 
    <property name="eclipselink.ddl-generation" value="drop-and-create-tables" /> 
    <property name="javax.persistence.ddl-drop-script-source" value="main/resources/drop.sql" /> 
    <property name="javax.persistence.sql-load-script-source" value="main/resources/insert.sql"/> 
</properties> 

我建議您訪問以下鏈接,瞭解更多有關Database Schema Creation

0

一個更普遍的回答增添詹姆斯是JPA 2.1是JEE7規範的一部分。甲JEE6(指定JPA 2.0)兼容的應用服務器不能使用這些屬性(不打補丁JPA 2.1服務器):

<property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/> 
<property name="javax.persistence.schema-generation.create-source" value="script"/> 
<property name="javax.persistence.schema-generation.create-script-source" value="META-INF/sql/create.sql" /> 
<property name="javax.persistence.sql-load-script-source" value="META-INF/sql/data.sql" /> 
<property name="javax.persistence.schema-generation.drop-source" value="script" /> 
<property name="javax.persistence.schema-generation.drop-script-source" value="META-INF/sql/drop.sql" /> 

實施JEE6的應用服務器的一個例子是Jboss的7. Wildfly 8,然而,實施JEE7和這些屬性應該可以使用。

如果您不確定是否要注意persistence標記上的version屬性。在這種情況下,它是2.0。如果它被指定爲2.1並正確配置,那麼將使用JPA 2.1並且屬性將起作用。