2010-10-01 75 views
3

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

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

此计算列不会被保留。它仅在运行时才需要。

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

那么,有可能吗?

TIA,鲍勃

回答

2

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

JPA不为此提供标准支持。有些提供商具有特定的扩展,如Hibernate的@Formula,但EclipseLink没有direct equivalent(尽管它提供了替代方法,请参阅链接的答案)。

此计算列不会被保留。它仅在运行时才需要。

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

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

从你的描述中,我不确定你需要什么比一个额外的getter(没有任何字段)更花哨,会返回计算值。如果需要,请将其设为@Transient。但也许这只是一个例子。在这种情况下,检查提到的链接(和Request for Enhancement)。