在部署时执行SQL脚本

时间:2011-06-13 12:42:50

标签: java-ee eclipselink sql-scripts

我需要在部署JavaEE / JPA(eclipseLink)项目后执行小sql脚本(插入一些数据)太glassFish - 你最喜欢做什么事情。我知道hibernate有很简单的方法可以做到这一点,不幸的是我正在使用EclipseLink - 所以你认为在启动时发布Construct和singletonBean会怎样做,我认为sql-maven-plugin也是可能的 - 我也看到了使用的想法SessionCustomizer最后一个是相当不错的,但我只需要在部署上运行该脚本?任何其他想法如何做到干净漂亮?

2 个答案:

答案 0 :(得分:1)

也许你应该看看DbMaintain

您只需将sql文件添加到类路径中并稍微配置DbMaintain。部署后,DbMaintain将执行您的脚本。

还有tutorial

祝你好运, 克里斯

答案 1 :(得分:0)

我使用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文件。

第一个元素说从哪里读取&#34;插入/更新&#34;查询。

第二个元素说&#34;首先从实体创建表,然后执行DDL脚本&#34;

第三个元素说从哪里读取DDL查询为ALTER TABLE / CREATE VIEW,...

注意:我不知道它是eclipselink限制还是Wildfly问题,但查询必须在一行中:解析器结束执行;或者在回车时返回如下查询:

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

成了2个查询,一个是行,而且他们错了