Java – Hibernate: delete many to many associations
•
Java
I have two tables associated with many to many
– DB segment:
Load ID name
Meeting Id date
sessionsloads LoadId SESSIONID
– hibernate mapping fragment:
/* loads.hbm.xml */ <set name="sessions" table="sessionsloads" inverse="true"> <key column="LoadId" /> <many-to-many column="SessionId" class="Session" /> </set> … /* sessions.hbm.xml */ <set name="loads" table="sessionsloads"> <key column="SessionId" /> <many-to-many column="LoadId" class="Load" /> </set>
To delete an entry from the association table sessionsloads, I execute this Code:
Session session = sessionDao.getObject(sessionId); Load load = loadDao.getObject(loadId); load.getSessions().remove(session); loadDao.saveObject(load);
However, nothing has changed since startup
What is the correct way to delete an association?
Solution
You need to update both ends 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);
In fact, many developers use a defensive approach to manage two - way relationships For example, in load, you can 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); }
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码