我有一个实体调用公司和另一个实体调用令牌。
1 公司将拥有许多代币。
所以在我的公司实体中,我将有如下内容:
@OneToMany(mappedBy = "companyId")
public Set< Token > getTokens() {
return tokens;
}
但是,在返回过程中我会有一些逻辑,它会在返回之前更改令牌列表,如下所示:
@OneToMany(mappedBy = "companyId")
public Set< Token > getTokens() {
tokens.remove( token );
return tokens;
}
由于我更改了令牌列表中的值,因此,每次我使用休眠从数据库中选择公司对象时,公司表都会自动更新。
根据我的理解,这是一种休眠脏检查的行为。所以当 Hibernate 检测到它有什么变化时,它会更新数据库。
有什么办法可以避免这种情况吗?例如,也许只是调用现有的休眠函数,这样休眠就会知道令牌列表是脏的,它不会进行更新。
是的,我知道 getTokens() 中的过滤逻辑不合适。正确的过滤逻辑不应应用于实体级别。但是由于目前使用这种方法的地方很多,如果我在这个实体级别更改,那么会影响其他地方,如果我也更改其他地方,则需要重新重新测试整个应用程序。
因此,我试图在这方面找到更好的方法。