在我正在从事的当前项目中,我们使用 EclipseLink作为JPA提供程序。在后台是 DB2-数据库。
我们想使用时间戳字段 仅使用限制引入“乐观锁定” 。此外,这些时间戳字段是CURRENT TIMESTAMP字段,因此在更新实体时,CURRENT TIMESTAMP字段会更新值本身。这对于保证整个系统的可靠性是必要的。
用@Version注释实体的属性时,出现以下错误消息:
内部异常:com.ibm.websphere.ce.cm.StaleConnectionException:不支持SQL语句。 SQLCODE = -142,SQLSTATE = 42612,DRIVER = 4.22.29
错误代码:-142
致电:VALUES CURRENT TIMESTAMP
查询:ValueReadQuery(sql =“ VALUES CURRENT TIMESTAMP”)
在
org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl $ 1.handleException(EntityManagerSetupImpl.java:767)
在
org.eclipse.persistence.transaction.AbstractSynchronizationListener.handleException(AbstractSynchronizationListener.java:275)
[…]
注意:使用提到的注释时,我只会收到此错误消息。
我的研究结果如下:
在深入探讨该主题之后,我遇到了以下链接,该链接似乎是迄今为止最令人鼓舞的:
https://www.idug.org/p/fo/et/thread=36380
总之,建议的方法是扩展org.eclipse.persistence.platform.database.DB2MainframePlatform并操纵生成的SQL语句。
我的期望是,应该有更好的方法,因为这应该是框架的标准案例。如果不是,是否有更合适/更好的方法来解决此问题?