Hibernate - 在 pojo 中声明 Transient 对象

标签 hibernate transient

我有一个 pojo,它是表 TableA 的对象 A

表A(int a1,int a2)

为了填充表,我运行一个返回 (int a1, int a2, boolean b3) 的查询(并运行多个数据检查)

b3 在 TableA 中无效,但我仍然想对两者使用相同的 pojo (这是一个非常大的 pojo ,并且仅仅为了查询而使用一个 pojo 将是一个主要的代码重复)

我已经在pojo中声明了

@Transient
Boolean getB3() {..}
void setB3(Boolean b3) {..} 

在查询中我声明我期望获得 b3 值:

<return> ...
<return-property name="b3" column="b3"/>
...
</return>

但是 Hibernate 只是忽略该参数并且从不使用“setB3()”.. 当我删除 @Transient 时,它起作用(然后在插入表时自然失败) - 所以所有名称都是正确的

我该如何解决这个问题?

谢谢!

最佳答案

好吧,不同的想法。我想既然您将该属性标记为 transient hibernate ,则既不会加载也不会存储该属性。

一种解决方案可能是创建两个类。一种没有 b 属性。第二个是使用mappedSuperclass 注释从第一个扩展而来的。

或者你可以尝试用一些 formula 来映射它它只是提供一些默认值(例如 false)。因此,对于“正常”情况,您 hibernate 将使用公式,从而产生一些默认值,而对于您的特殊查询,您可以使用该查询中的任何逻辑。

关于Hibernate - 在 pojo 中声明 Transient 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/565216/

相关文章:

java - JPA:如何仅映射另一个实体的一个属性

java - 未提交声明性 Spring 交易

java - 确定什么是 transient 是一种反复试验吗?

data-structures - 为什么没有窥视! clojure transient 向量的函数?

javascript - 在 "CSS3 transient animation"的处理过程中能否得到 transient 值

java - Spring MVC + hibernate : How to handle form with relation

java - 如何在使用大量记录时使用 Hibernate 更快地进行更新

java - 请求处理失败;嵌套异常是 java.lang.NullPointerException Spring-hibernate 集成

jpa - @Transient注解,@org.springframework.data.annotation.Transient注解,transient关键字和密码存储

Java transient 变量类型必须知道序列化?