Hibernate等效于eclipse链接hibernate.hbm2ddl.auto = validate

时间:2013-03-05 01:11:19

标签: hibernate jpa eclipselink

我手动定义sql架构并在其上使用JPA 2.0来使用架构。我不允许JPA为我的应用程序创建/创建andy架构。 虽然这样做,我正在使用hibernate befor,如下所述的属性

<property name="hibernate.hbm2ddl.auto" value="validate"/>

用于验证表定义是否与定义的JPA有效,如果找不到应用服务器,则在找到表和JPA之间不匹配时。

现在我正在转向eclipse链接,我有

<property name="eclipselink.ddl-generation" value="none" />

所以Eclipse链接再次没有生成任何模式,但似乎没有相当于hibernate中的验证。

如果我的JPA定义了一个额外的列并且表没有定义,那么Web应用程序也会正常运行,只有在第一次插入发生时,验证失败并抛出异常,如图所示。

Caused by: java.sql.SQLSyntaxErrorException: 'OTHERNAME' is not a column in table or VTI 'APP.BSREQUEST'.

如何在启动期间进行Web应用程序持久性检查并验证事情是否正确,而不是等待第一次插入/删除发生时。

是否有相当于      在eclipse链接中我可以使用。

我尝试使用此功能,但这没有帮助,验证仍然发生在第一次persit / delete操作期间。

<property name="eclipselink.orm.validate.schema" value="true"/>

任何人都对此有好主意吗?

2 个答案:

答案 0 :(得分:1)

在运行时,EclipseLink不会读取数据库元数据。您启用的eclipselink.orm.validate.schema属性会打开JPA orm.xml文件的XML架构验证。

对于出色的设计时映射/架构/ Java验证,您可以使用作为Dali Java Persistence tools分布和Eclipse IDE for Java EE Developers分发的JPA工具(Oracle Enterprise Pack for Eclipse)。

Dali会告诉您是否要映射到不存在的列,并提供集成的架构代码完成和丰富的编辑器,您可以使用它们来纠正错误。

答案 1 :(得分:0)

没有持久性单元属性,但EclipseLink通过IntegrityChecker支持此功能。这可以通过SessionCustomizer启用。