2013-05-04 5 views
2

Я хочу автоматически вставлять данные в мои таблицы MySQL. Поэтому я стараюсь использовать свойство JPA "javax.persistence.sql-нагрузки скрипт-исток" в моем persistence.xml:Как работать с 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 и эти свойства должны быть доступны для использования.

Подсказка, если вы не уверены, что необходимо соблюдать атрибут version на теге persistence. В этом случае это 2.0. Если он указан как 2.1 и правильно настроен, используется JPA 2.1, и свойства будут работать.

 Смежные вопросы

  • Нет связанных вопросов^_^