2012-05-24 2 views
3

У меня был рабочий проект в eclipse, который создал таблицу JPA из сущности в базу данных mysql (все еще изучая). К сожалению, он сделал таблицу в неправильной базе данных, так как я хотел, чтобы там были «тестовые» и «производственные» базы данных. Так или иначе, он получил детали для «production» db, даже если бы он выглядел так, как будто выбранное соединение с базой данных было для теста. Я немного подделал проект и подключил его к правильному объекту соединения для определенного (теста). Я могу выполнить ping db в eclipse (оба dbs) и увидеть db в проводнике источника данных. Но теперь я не могу создать таблицу (ы) для проекта, щелкнув ее правой кнопкой мыши и выбрав «JPA» Инструменты>> «Создать таблицы из объектов». Создание начинается и заканчивается без ошибок, как и все, но я не вижу таблиц ни в одной из баз данных. (В eclipse Database explorer или из командной строки). Файл persistence.xml должен быть точным, поскольку он уже создал эту таблицу раньше.не может создавать jpa-таблицы в eclipse

Единственная ошибка для класса Entity, поскольку он говорит для аннотации Entity «Таблица xxx не может быть разрешена». И, как я вижу, это происходит из-за того, что не создается.

Вот настойчивость.xml на всякий случай. http://pastebin.com/djPZei90

Проект также является проектом Maven и использует SVN. Зависимости были успешно загружены maven для проекта eclipse/project, и нет никаких осложнений с SVN.

Из-за Maven есть 2 файла persistence.xml (только учетные данные для входа и изменения имени базы данных) для производства и тестирования. Возможно, что db-соединение было проверено и загружено из неправильного файла на 1-м месте. (просто гадать)

Также я попытался создать script.sql при создании таблицы (таблиц). Я нашел файл, но он был полностью пуст.

В любом случае проблема заключается в том, что я не могу создавать таблицы нигде. Я полностью озадачен этим. Любые подсказки, где я должен искать, чтобы исправить это?

+0

Слишком много обычного текста. Не читал. – JMelnik

+1

Это может быть не связано, но persistence.xml показывает свойства DDL-сервера поставщика eclipseLink, но указывает Hibernate как поставщика jpa. Если вы собираетесь использовать генерацию DDL во время выполнения, вам нужно переключить провайдера на org.eclipse.persistence.jpa.PersistenceProvider или вместо этого указать параметры Hibernate. Просто комментарий, потому что я не знаю, что Дали фактически использует это для создания таблиц. – Chris

+0

Пробовал с обоими провайдерами. Без изменений. –

ответ

2

У Криса было все правильно, даже если я не понял ответ правильно в первом чтении. Я пробовал с другим провайдером, но я, возможно, случайно изменил неправильный файл (2 файла 'persistence.xml', поскольку это проект maven), или, возможно, была другая причина, по которой я не смог обнаружить. Мне подсказывали ранее, что я должен использовать данного провайдера (в persitence.xml). Причинение того, что я не обратил на это слишком много внимания. С помощью EclipseLink, провайдер должен быть действительно:

<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 

Еще раз спасибо Крис, даже то, что мне не удалось с первой попытки, и пришлось провести еще несколько часов на решение этого.

+0

Я позже заметил, что ответ был у Криса, а не у Джмельника. JMelnik - задница, поэтому извинения за Криса из-за ложных кредитов. –

0

Проведите весь день на этом.

Я создал совершенно новый проект (JPA) в Eclipse (Indigo btw). Также создана новая база данных (mysql) для этого.

Для этого было установлено соединение в Eclipse. Файл> Создать> Другое ...> Профиль подключения.

Создана новая структура упаковки и позволяет Eclipse создать «persistence.xml» (src/META-INF/persistence.xml).

Я создал класс «JPA Entity» с мастером затмения. (добавлены поля 'id' (PK) и 'content') Скопировал 'pom.xml' из моего предыдущего проекта в новый (внесены незначительные изменения, такие как название проекта).

Также скопировал файл 'persistence.xml' из предыдущего проекта (src/main/java/META-INF /, no 'test'). Изменены данные базы данных и учетные данные для входа из файла персистентности.

Создал проект «Проект Maven» в затмении (щелкните правой кнопкой мыши по имени проекта> Настроить) Как и в случае проекта Maven, по умолчанию «persistence.xml» можно удалить, поскольку он был в неправильном месте. (Mavenizing проекта удалил все ошибки из уже существующих банок с pom.xml)

Попытался создать таблицу снова для проекта (такая же ошибка, но подождите ...).

правой нажал на проекте> Maven> Отключить Maven Природа

Затем снова сделал это Maven проект, правильно щелкнул по проекту> Настройка> ...

Пробовал снова создания таблиц и создал их. Все работает!

Go figure!

Кажется, все было нормально, как я подозревал. Кажется, что есть какая-то ошибка с maven (plugin) + eclipse.

Выполнение тех же трюков в предыдущем проекте не поможет. Я даже создал класс сущности с помощью мастера (удалил существующий). Объявление < класса > добавлено в 'persistence.xml', но оно все равно не будет делать таблицу. (Также попытался удалить и повторно добавить природу maven)

Я мог бы пропустить что-то в процессе/сделал это по-другому или сделал это неправильно вместе. Но, учитывая, что я получаю другую работу над проектом, а другой - нет, используя те же самые трюки, кажется, есть большая неприятная ошибка.

+0

Не добавляйте ссылки для файлов сущностей здесь, поскольку нет ничего конкретного по сравнению с файлами, найденными с учебниками по всему. Помпа.xml может быть специфичным для среды, но он также был скопирован из другого сообщения. Я сделал некоторые изменения самостоятельно, основываясь на советах, которые я нашел. Отправьте его сюда, если кто-то нуждается в каком-то maven + jpa pom. http://pastebin.com/5abmc2D2 –

+0

Не сказать, что это лучший jpa + maven pom, который вы могли себе представить, поэтому, безусловно, лучше. Я тоже Maven noob. :) По крайней мере, это работает и вам не нужно настраивать на settings.xml, устанавливать файлы в локальный репозиторий или что-то еще такое дерьмовое. –

+0

Также версии в pom.xml должны быть довольно новыми, поскольку я проверил (большинство из них) их исходные источники. Дата будет 25/5/2012. –

1

Не могли бы вы решить проблему? К сожалению, я наткнулся на один и тот же редкий вопрос, который совершенно не имеет смысла. JPA Tools просто не добавляет классы сопоставления по какой-либо причине, хотя он записывает их в файл persistence.xml.

На прошлой неделе все работало безупречно, но теперь все это f * *. Я даже создал новый независимый проект в другой рабочей области, но это случается с той же ошибкой. Очевидно, что это ошибка eclipse/plugin, иначе я не могу это объяснить. Работа с eclipse 4.2.0. Я не счастлив.

Редактировать: После удаления инструментов Dali, JPA Configurator, Seam 3 Создатели плагинов, похоже, снова работают. Не знаю, почему, скорее всего, конфликт, но он все еще не объясняет, почему это произошло сейчас, а не месяц назад. Я не изменил установку eclipse вообще с тех пор ...

+0

Вскоре: Моя проблема была в том, что у меня был неправильный провайдер в maven pom.xml. Он работал, казалось бы, но вызвал указанную ошибку. Принял мой собственный ответ ниже. –

+0

Спасибо за ваш ответ. Я тем временем нашел «решение»: - | (см. отредактированный пост выше). Я до сих пор не удовлетворен этим, но по крайней мере теперь он работает снова. – Malvin

+1

Я предполагаю, что это может иметь какое-то отношение к загрузке классов. Вы сказали, что у вас есть Дали- и Шейм-плагины. Предположительно, они оба имеют реализацию для JPA, а Dali - неправильная. –

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