Hibernate: delete many-to-many association

后端 未结 2 782
野性不改
野性不改 2020-12-29 00:02

I have two tables with the many-to-many association.

— DB fragment:

loads
Id
Name

sessions
Id
Date<

相关标签:
2条回答
  • 2020-12-29 00:32

    Looks like you just need to turn on Transitive persistence (e.g., cascade=all-delete-orphan for "full" transitive.)

    -- Edit Thanks for the upvote, althugh Pascal was accurate in that cascade alone is not enough to fix the original problem, but that both sides of the relationship weren't being managed. Teach me to answer hastily :)

    --

    Also, an Entity named Session broke my brain :(

    0 讨论(0)
  • 2020-12-29 00:37

    You need to update both sides of the link between Load and Session:

    Session session = sessionDao.getObject(sessionId);
    Load load = loadDao.getObject(loadId);
    
    load.getSessions().remove(session);
    session.getLoads().remove(load);
    loadDao.saveObject(load);
    

    Actually, many developer use defensive methods to manage bi-directional associations. For example on Load, you could add the following methods:

    public void removeFromSessions(Session session) {
        this.getSessions().remove(session);
        session.getLoads().remove(this);
    }
    public void addToSessions(Session session) {
        this.getSessions().add(session);
        session.getLoads().add(this);
    }
    
    0 讨论(0)
提交回复
热议问题