gpt4 book ai didi

java - 在 hibernate 中更新父对象时多对多关系出现问题?

转载 作者:行者123 更新时间:2023-12-01 06:18:37 25 4
gpt4 key购买 nike

我在用户表和主题表之间有多对多关系。连接表是user_topic。主题实体有这样的:

@ManyToMany(fetch = FetchType.LAZY, targetEntity = IntermediateUser.class)
@JoinTable(name = "user_topic", catalog = DataBaseConstants.DBCATALOG, joinColumns = { @JoinColumn(name = "topic_id", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "user_id", nullable = false, updatable = false) })
@Cascade(value = CascadeType.DELETE)
public Set<IntermediateUser> getVotingUsers() {
return votingUsers;
}

我在 transient 主题实例中更新集合“votingUsers”,然后调用 hibernate session 的更新方法。我不使用 setVotingUsers 方法,而是通过 votingUsers.clear() 方法清除 VotingUsers 集合,然后通过 votingUsers.add(voter); 添加要更新,我调用此方法:

sessionFactory.currentSession().update(topic);

因此,我在日志中看到以下几行

DEBUG org.hibernate.SQL- update javahelpdb.topic set content=?, `PUBLISH_DATE`=?, rate=?, forum=?, title=?, user=?, viewquantity=? where topic_id=?
DEBUG org.hibernate.SQL- delete from javahelpdb.user_topic where topic_id=?
DEBUG org.hibernate.SQL- insert into javahelpdb.user_topic (topic_id, user_id) values (?, ?)

所有参数均正确。我希望只有一个查询,例如:

update user_topic set topic_id=?, user_id=? where topic_id=?

如何指示hibernate更新user_topic而不是删除和插入?

谢谢!

最佳答案

我认为这是 hibernate 行为的正常方式。因此,您对此无能为力,如果关系和参数正确,为什么还要麻烦呢?

关于java - 在 hibernate 中更新父对象时多对多关系出现问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17192191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com