JPA / EclipseLink - 计算列

时间:2010-10-01 23:25:05

标签: orm jpa eclipselink jpa-2.0

我正在尝试学习JPA。我创建了一个简单的实体类。此实体有3列:ID,NAME,NUMBER_A。它工作正常:我可以坚持,更新和删除没有问题。

我要做的是创建一个计算/计算列。我想检索NUMBER_A,使用它来计算新值并设置计算列(假设为CALC_COLUMN)。

此计算列不会保留。它只在运行时才有必要。

我尝试创建一个简单的双重对象,它是getter和setter,但是当我运行应用程序时,它会抛出错误,告知列CALC_COLUMN不存在,因为JPA / EclipseLink正在尝试将其用作有效的数据库列(列'CALC_COLUMN'不在FROM列表中的任何表中......)。

那么,有可能吗?

TIA,Bob

1 个答案:

答案 0 :(得分:2)

  

我要做的是创建一个计算/计算列。

JPA不为此提供标准支持。有些提供商有像Hibernate @Formula这样的特定扩展,但EclipseLink没有direct equivalent(虽然它确实提供了替代方案,请参阅链接的答案)。

  

此计算列不会保留。它只在运行时才有必要。

那你为什么要谈论专栏呢? :)

  

我尝试创建一个简单的双重对象,它是getter和setter,但是当我运行应用程序时,它会抛出错误,告知列CALC_COLUMN不存在,因为JPA / EclipseLink正在尝试将其用作有效的数据库列(列'CALC_COLUMN'不在FROM列表中的任何表中......)。

根据您的描述,我不确定您是否需要更多的花哨,而不是额外的getter(没有任何字段)将返回计算值。如果需要,请将其设为@Transient。但也许这只是一个例子。在这种情况下,请检查提到的链接(以及Request for Enhancement)。