有没有办法声明实体类的字段不是持久属性?

Posted

技术标签:

【中文标题】有没有办法声明实体类的字段不是持久属性?【英文标题】:Is there any way to state that a field of an entity class is not a persistent attribute? 【发布时间】:2010-01-05 12:07:20 【问题描述】:

问题在标题中。

一些解释:我无法实现必要的映射。但是我可以使用 DAO 中的查询来获取所有必要的数据。所以,我想在 DAO 的 findAll() 方法中手动将该数据插入到我的实体中。

但是 JPA 将所有实体的字段视为持久属性,并将它们添加到生成的 sql 查询中。当然,我得到一个无法执行查询的异常。所以,我需要说明“这个字段将手动设置,跳过它”。

附:这个解决方案对我来说听起来很丑,但我找不到更好的解决方案,因为我有“不可变”的数据库架构,我需要将它映射到我的实体上。

【问题讨论】:

【参考方案1】:

使用@Transient annotation

【讨论】:

【参考方案2】:

这不是我的想法,可能是错误的,但是......

没有@transient 注释吗?或者只是 transient Java 修饰符?

我认为 JPA 不会弄乱这样标记的字段。

【讨论】:

+1 用于提及 transient 关键字,这当然是 Hibernate 的荣誉,我相信 JPA。在真正合适时使用低级语言功能而不是注释是很有意义的。

以上是关于有没有办法声明实体类的字段不是持久属性?的主要内容,如果未能解决你的问题,请参考以下文章

JPA注解

如何根据数据库的字段动态创建实体类? 用java啊~ 最好给点源码和实例

Python中类的声明,使用,属性,实例属性,计算属性及继承,重写

实体类的状态与Hibernate缓存

JavaEE Tutorials - Java持久化API介绍

oop典型应用:实体类