【问题标题】:null out all references to a removed entity清空对已删除实体的所有引用
【发布时间】:2011-10-06 12:07:42
【问题描述】:

我有一个实体客户端和一个实体会话。客户端有一个字段currentSession,它引用了一个会话实体。在某些时候,我最终会删除会话,有时这是客户端的当前会话。如果我的持久性提供程序引用了我要删除的会话,有什么方法可以指示我的持久性提供程序 null 客户端的 currentSession 字段?

@Entity
public class ClientEntity {

    @OneToOne
    private SessionEntity currentSession;
}

当我完成某个会话时;我想像这样删除它。请注意,不能保证session 也是客户端的当前会话。

entityManager.remove( session );

我可以在代码中完成这一切,但这会很丑;我想让持久性提供者为我处理这种关系管理。

【问题讨论】:

    标签: java hibernate jpa


    【解决方案1】:

    据我了解,您所说的是很多人在 Hibernate 中错过的东西,例如 Cascade.SET_NULL。这已经在herethere 讨论过。

    正如其中一位海报所建议的那样,您需要自己在拦截器或侦听器中执行此操作,或者找到另一种方法来实现您真正需要的。

    【讨论】:

    • 您能解释一下为什么stackoverflow.com/questions/1012874/… 将休眠设置为空以响应删除数据吗?
    • 你把我弄到这里了——我不知道。很可能有一部分我们不知道的故事。即使可以复制,我真的怀疑 Hibernate 是否会搜索所有代表该特定数据条目的 POJO,并将引用设置为 null。
    猜你喜欢
    • 1970-01-01
    • 2012-08-20
    • 2023-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多