gpt4 book ai didi

Hibernate - 在 pojo 中声明一个 Transient 对象

转载 作者:行者123 更新时间:2023-12-04 07:09:44 24 4
gpt4 key购买 nike

我有一个 pojo 是表 TableA 的对象 A
TableA (int a1,int a2) .

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

b3 在 TableA 中无效,但我仍然想对两者使用相同的 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 属性。第二个是从第一个扩展而来的,使用了 mappingSuperclass 注释。

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

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com