Java 逐出没有级联的急切关联=";驱逐;

Java 逐出没有级联的急切关联=";驱逐;,java,hibernate,Java,Hibernate,有没有办法让Hibernate逐出一个实体及其所有急切的或一对一的关联,而不必逐个手动逐出关联?(并且不在关联上设置cascade=“execute”) 我通常会在持久性层构建并工作后发现这种需求,我对为这些关联全局添加这种配置没有信心。我只想在一个特殊的情况下逐级驱逐 此外,如果有一种方法可以从数据库中检索实体,而不将其(及其急切的关联)附加到会话,那也没问题 我想这样做是为了在UI修改的实体与其当前DB状态之间执行一些比较逻辑。在比较逻辑之后,将始终保存UI修改的实体。比较背后的逻辑与渴望或

有没有办法让Hibernate逐出一个实体及其所有急切的或一对一的关联,而不必逐个手动逐出关联?(并且不在关联上设置cascade=“execute”)

我通常会在持久性层构建并工作后发现这种需求,我对为这些关联全局添加这种配置没有信心。我只想在一个特殊的情况下逐级驱逐

此外,如果有一种方法可以从数据库中检索实体,而不将其(及其急切的关联)附加到会话,那也没问题


我想这样做是为了在UI修改的实体与其当前DB状态之间执行一些比较逻辑。在比较逻辑之后,将始终保存UI修改的实体。比较背后的逻辑与渴望或一对一关联无关。

编写一个新函数直接在DB中进行比较并返回一些东西怎么样


我认为这很适合你的需要。

你第一个问题的答案是否定的


在第二个问题中,我不明白为什么您不希望将实体附加到会话。我可以理解为什么您不想加载一些关联,但这正是将关联设置为懒惰而不是急切的目标。只是不要让他们着急,他们不会在会议中被加载。

谢谢您的评论。我不希望从DB中检索到的实体附加到会话,因为我将使用该实体的另一个实例进行更新。而且我有渴望的一对一关联(并且不支持延迟加载)。不管怎么说,第一个问题的答案几乎让我明白,我必须手动清除所有关联。只需使用“合并”而不是“更新”,一切都会很好。谢谢,
merge
就可以了。我不知道我在想什么。我不知道这对我问的问题有什么帮助。我想通过对
execute(x)
的一次调用来逐出一个实体
x
及其所有一对一关联,并且不需要通过
cascade=execute
全局更改关联。后加载是在getX之后调用的函数,因此可以在加载后立即逐出集合。但是,我不应该在
@Entity
类中注释它吗?我不想在全球范围内这样做,我只想在特定情况下这样做。