JPA/EclipseLink - 计算列
Posted
技术标签:
【中文标题】JPA/EclipseLink - 计算列【英文标题】:JPA/EclipseLink - Calculated column 【发布时间】:2010-10-01 23:25:04 【问题描述】:我正在努力学习 JPA。我创建了一个简单的实体类。此实体有 3 列:ID、NAME、NUMBER_A。它工作正常:我可以毫无问题地持久化、更新和删除。
我要做的是创建一个计算/计算列。我想检索 NUMBER_A,用它来计算一个新值并设置计算列(比如说 CALC_COLUMN)。
不会保留此计算列。仅在运行时需要。
我试图创建一个简单的双重对象,它是 getter 和 setter,但是当我运行应用程序时,它会抛出一个错误,告诉 CALC_COLUMN 列不存在,因为 JPA/EclipseLink 试图将它用作有效的数据库列(列 'CALC_COLUMN' 要么不在 FROM 列表的任何表中...)。
那么,有可能吗?
TIA,鲍勃
【问题讨论】:
【参考方案1】:我要做的是创建一个计算/计算列。
JPA 不为此提供标准支持。一些提供程序具有特定的扩展,例如 Hibernate 的 @Formula
,但 EclipseLink 没有 direct equivalent(尽管它确实提供了替代方案,请参阅链接的答案)。
不会保留此计算列。仅在运行时需要。
那你为什么要为它建立一个专栏? :)
我试图创建一个简单的双重对象,它是 getter 和 setter,但是当我运行应用程序时,它会抛出一个错误,告诉 CALC_COLUMN 列不存在,因为 JPA/EclipseLink 试图将它用作有效的数据库列(列 'CALC_COLUMN' 要么不在 FROM 列表的任何表中...)。
根据您的描述,我不确定您是否需要比返回计算值的附加 getter(没有任何字段)更花哨的东西。如果需要,请将其设为@Transient
。但也许这只是一个例子。在这种情况下,请检查上述链接(以及 Request for Enhancement)。
【讨论】:
以上是关于JPA/EclipseLink - 计算列的主要内容,如果未能解决你的问题,请参考以下文章
JPA + EclipseLink+ HSQLDB 不创建表
jpa2/eclipselink 的合适 DAO 结构是啥?
同一应用程序中的 JPA/Eclipselink 和 JDBC 连接