Как мне загрузить Hibernate import.sql для загрузки? - PullRequest
5 голосов
/ 29 марта 2011

Таблицы базы данных успешно создаются

<property name="hibernate.hbm2ddl.auto" value="create"/>"

в файле persistence.xml, однако каждый раз, когда я запускаю свое приложение (в Eclipse Helios), import.sql не загружается.Мой файл persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<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/ ... ce_2_0.xsd" version="2.0">
<persistence-unit name="myPersistenceUnit">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.hbm2ddl.auto" value="create"/>

<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>

<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
<property name="hibernate.connection.url" value="jdbc:mysql://localhost/svrmonitor4" />
<property name="hibernate.connection.username" value="username" />
<property name="hibernate.connection.password" value="password" />

</properties>   
</persistence-unit>
</persistence>

С содержимым import.sql я попытался удалить разрывы строк с + без точки с запятой ";", протестировал SQL в командной строке (операторы вставки работают), пытался намеренно нарушить SQL (не выдает ошибок на консоли).Я попытался поместить import.sql в корень моего пути к классам, а также в META-INF (все еще не повезло).Я попытался поставить "USE svrmonitor4;"в начале файла import.sql (опять же, не повезло).

Я что-то упустил в файле persistence.xml?

Если при вставке в базу данных MySQL обнаружены ошибки, где сообщается об ошибках?Консоль Eclipse или журналы MySQL?Я еще не просматривал журналы MySQL.

В Eclipse у меня есть три проекта со следующими зависимостями:

Проект A (содержит класс Main, из которого запускается приложение) ->Проект B -> Проект C (содержит классы сущностей, persistence.xml)

Я попытался поместить import.sql в путь к классам каждого из этих проектов, но это не имеет значения.

Ответы [ 2 ]

4 голосов
/ 04 января 2012

Мне не помогло повышение уровня ведения журнала Log4J, но:

Когда HibernateJpaVendorAdapter настроен с generateDdl = "true", значение hibernate.hbm2ddl.auto устанавливается в "update", переопределяя фактическое значение, указанное в persistence.xml.

Мой файл import.sql не был загружен, и это вызвало у меня многочасовую головную боль!


См. Это из: Источник Спрингс

4 голосов
/ 29 марта 2011

Я обнаружил проблему, увеличив уровень ведения журнала Log4J, чтобы на консоли можно было видеть сообщения INFO инструмента hibermddd от hibernate. Файл import.sql нормально находился в корневом каталоге пути моего проекта с файлом persistence.xml, хотя на него ссылался другой вызывающий проект в eclipse. Соответствующие строки, которые я добавил в свой log4j.xml:

<logger name="org.hibernate.tool.hbm2ddl" additivity="false">
    <level value="info"/><appender-ref ref="console" /> 
</logger>

<logger name="org.hibernate" additivity="false">
    <level value="warn"/><appender-ref ref="console" /> 
</logger>

Это означало, что я не получил всю информацию отладки из Hibernate, а только информацию, относящуюся к импорту .import.sql.

Использование Log4j очень полезно для этого, потому что оно показывает мне любые ошибки с SQL сценария import.sql

Как оказалось, мой оператор SQL "INSERT INTO ..." не имел значений в правильном порядке (это произошло потому, что при генерации таблиц из классов сущностей порядок таблиц в алфавитном порядке, где переменные определяли классы в моем произвольном порядке).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...