gpt4 book ai didi

hibernate - 在 Hibernate 中使用 Enum 会导致 select 后跟更新语句

转载 作者:行者123 更新时间:2023-12-02 22:56:27 24 4
gpt4 key购买 nike

我有一个具有枚举属性的映射实体。通过查看日志文件,每当我在此类实体上运行 select 语句时,结果都是立即更新。例如,如果我的结果集包含 100 条记录,那么我有:

[INFO org... select...]
[INFO org... update... where id=?]
[INFO org... update... where id=?]

...重复100次

如果我将该属性标记为 update=false 问题就会消失。枚举是通过枚举转换器类分配的,该类是我从一本著名的书中复制的。所以我不知道是否只是复制并粘贴代码。这是在 hbm 文件中声明的方式。

<typedef class="mypackage.HbnEnumConverter" name="the_type">
<param name="enumClassname">mypackage.TheType</param>
</typedef>

你能指出一个调查这个问题的方向吗?此外,在 hibernate 字段上 update=false 会产生什么后果?

谢谢

最佳答案

如果您的对象标记为脏,Hibernate 将生成更新。

查看日志以查看 hibernate 是否将您的对象标记为脏。

如果您有类似下面的内容。

 class Entity{

public YourEnum getEnum() {
return yourEnum==null?YourEnum.SOME_VALUE:....;
}
}

或者也许在您的 Enum.equals 方法中,您可能会在 equals(null,null) 情况下返回 false?

如果比较的对象相同,equals 方法应该返回 true,否则返回 false,因为 hibernate 使用 equals 方法来决定对象是否脏。

关于hibernate - 在 Hibernate 中使用 Enum 会导致 select 后跟更新语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4626618/

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