Выполнить сценарий SQL при развертывании - PullRequest
1 голос
/ 13 июня 2011

Мне нужно выполнить небольшой сценарий sql (вставить некоторые данные) после развертывания проекта JavaEE / JPA (eclipseLink) слишком glassFish - что, по вашему мнению, было бы лучшим способом сделать это. Я знаю, что у hibernate есть очень чистый способ сделать это, к сожалению, я использую EclipseLink - так что, как вы думаете, подойдут post Construct и singletonBean при запуске, я думаю, что sql-maven-plugin также возможен - я также видел идею использовать SessionCustomizer последний довольно хорош, но мне нужно только запустить этот скрипт при развертывании? Любые другие идеи, как сделать это красиво и чисто?

Ответы [ 2 ]

1 голос
/ 15 июня 2011

Может быть, вам стоит взглянуть на DbMaintain .

Вам просто нужно добавить sql-файлы в ваш путь к классам и немного настроить DbMaintain.После развертывания DbMaintain выполнит ваши сценарии.

Также есть учебник .

С наилучшими пожеланиями, Крис

0 голосов
/ 10 октября 2017

Я использую Wildfly, но я думаю, что вы можете сделать то же самое в Glassfish.

В единицу постоянства добавьте элемент:

<property name="javax.persistence.sql-load-script-source" value="META-INF/defaultdata.sql"/>
<property name="javax.persistence.schema-generation.create-source" value="metadata-then-script"/>
<property name="javax.persistence.schema-generation.create-script-source" value="META-INF/ddlbsscarrier.sql"/>

В META-INF создайте sql-файлы с вашими запросами.

Первый элемент говорит, откуда читается запрос "вставка / обновление".

Второй элемент говорит: «Сначала создайте таблицы из сущностей, затем выполните сценарии DDL»

Третий элемент говорит откуда читать запрос DDL как ALTER TABLE / CREATE VIEW, ...

Обратите внимание : я не знаю, является ли это ограничением eclipselink или проблемой Wildfly, но запрос должен быть в строке: парсер заканчивает выполнение в; или при возврате каретки, например, запрос:

insert into table values
   ( x, y, z);

стало 2 запроса, один для строки, и они не правы

...