Создать сценарий создания для всех таблиц, относящихся к ОДНОМУ классу сущностей JPA - PullRequest
0 голосов
/ 26 мая 2011

Я хочу создать сценарий создания таблицы для определенного класса сущности.

Я могу автоматически сгенерировать полный скрипт для всех моих классов с помощью hibernate (инструмент hbm2dll) ( Автоматически генерировать схему данных из аннотированных классов объектов JPA ), но я не знаю, какотфильтруйте это так, чтобы осталась только та часть, которая относится к одному классу сущностей.

Привет, Лавр

Ответы [ 3 ]

0 голосов
/ 26 мая 2011

Полагаю, если вы сконфигурируете свой файл persistence.xml с этой единственной сущностью, исключите все другие незарегистрированные сущности, а затем запустите фабрику диспетчера сущностей с включенным автоматическим генерированием DDL, вы можете получить именно это.

<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/persistence_2_0.xsd" version="2.0">
   <persistence-unit name="stackoverflow" transaction-type="RESOURCE_LOCAL">
        <class>com.stackoverflow.model.SingleEntity</class>
        <exclude-unlisted-classes>true</exclude-unlisted-classes>
        <properties>
            <property name="hibernate.hbm2ddl.auto" value="create"/>
        </properties>
   </persistence-unit>
</persistence>
0 голосов
/ 01 марта 2012

Я сам управлял генерацией скриптов в коде.базовые запросы генерируются путем вызова инструмента hbm2ddl, и мой код добавляет к ним некоторые детали (например, добавление, если не существует, к запросам создания; добавление определенных запросов создания индекса; ...)

0 голосов
/ 26 мая 2011

Нет ли ассоциаций, объявленных между вашими сущностями?Hibernate будет генерировать внешние ключи, таблицы сопоставления и т. Д. На основе знаний о модели вашего домена.

Если вы просто хотите использовать DDL для отдельной изолированной таблицы, вы можете настроить фабрику сеансов только для этой сущности и указать ее на пустуюбаза данных.Затем вы можете записать DDL из журналов (сгенерированных Hibernate, как вы упомянули выше), а затем удалить эту базу данных, когда вы получите то, что вам нужно.

Однако, если есть какие-либо ассоциации, то hibernate не сможетсделай это.

...