orm - JPA/EclipseLink - 计算列

标签 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,鲍勃

最佳答案

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/

相关文章:

c# - 那里有好的第三方 EDMX 生成器/更新器工具吗?

java - Hibernate:继承映射到遗留数据库

java - JPA:在此结果集中找不到列名 DTYPE

java - JPA 持久性属性干扰 JAXB

java - 由于使用保留字作为列名,日期类型的实体管理器提交错误

java - JPA:如何避免简单地加载对象以便将其 ID 存储在数据库中?

grails - 两个类之间的一对多和多对多关系? (Grails ORM)

java - GlassFish 2.1.1 - TopLink (JPA1) 持久性异常 7106 - 字符串加密之谜

java - hibernate .jpa.criteria.BasicPathUsageException : Cannot join to attribute of basic type

java - JPA EclipseLink 与 @TableGenerator。为什么事务回滚后id赋的值不为空?