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