我正在努力学习JPA。我创建了一个简单的实体类。该实体有 3 列:ID、NAME、NUMBER_A。它工作正常:我可以毫无问题地坚持、更新和删除。
我想要做的是创建一个计算/计算列。我想检索 NUMBER_A,用它来计算一个新值并设置计算列(假设为 CALC_COLUMN)。
此计算列将不会保留。只有在运行时才需要。
我试图创建一个简单的双对象,它是 getter 和 setter,但是当我运行应用程序时,它抛出一个错误,告诉列 CALC_COLUMN 不存在,因为 JPA/EclipseLink 试图将它用作有效的数据库列(列 ' CALC_COLUMN' 要么不在 FROM 列表中的任何表中...)。
那么,有可能做到吗?
TIA,鲍勃
最佳答案
What I'm trying to do is to create a calculated/computed column.
JPA 不为此提供标准支持。一些提供者有特定的扩展,比如 Hibernate 的
@Formula
但 EclipseLink 没有 direct equivalent (尽管它确实提供了替代方案,请参阅链接的答案)。This calculated column will not be persisted. It's only necessary on runtime.
那你为什么要说它的专栏呢? :)
I tried to create a simple double object and it's getter and setter, but when I run the application, it throws an error telling that column CALC_COLUMN doesn't exist because JPA/EclipseLink is trying to use it as a valid database column (Column 'CALC_COLUMN' is either not in any table in the FROM list...).
根据您的描述,我不确定您是否需要比返回计算值的附加 getter(没有任何字段)更花哨的东西。制作它
@Transient
如果需要的话。但也许这只是一个例子。在这种情况下,请检查提到的链接(和 Request for Enhancement)。
关于orm - JPA/EclipseLink - 计算列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3843649/