1

在部署 JavaEE/JPA(eclipseLink) 项目之后,我需要执行小 sql 脚本(插入一些数据) glassFish - 你认为最好的方法是什么。我知道休眠有非常干净的方法来做到这一点不幸的是我正在使用 EclipseLink - 所以你认为在启动时发布 Construct 和 singletonBean 会做什么,我认为 sql-maven-plugin 也是可能的 - 我也看到了使用的想法SessionCustomizer 最后一个非常好,但我只需要在部署时运行该脚本吗?任何其他想法如何做得又好又干净?

4

2 回答 2

1

也许你应该看看DbMaintain

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

还有一个教程

最好的问候,克里斯

于 2011-06-15T14:38:36.777 回答
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 文件。

第一个元素说从哪里读取“插入/更新”查询。

第二个元素说“首先从实体创建表,然后执行 DDL 脚本”

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

注意:我不知道是eclipselink限制还是Wildfly问题,但是查询必须是连续的:解析器结束执行在; 或在回车时这样的查询:

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

变成了 2 个查询,一个用于行,它们是错误的

于 2017-10-10T13:59:13.967 回答