1

ユーザーテーブルとトピックテーブルの間に多対多の関係があります。結合テーブルは 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;
    }

一時的なトピック インスタンスでコレクション 'votingUsers' を更新し、休止状態セッションの update メソッドを呼び出します。私はメソッド setVotingUsers を使用しませんが、代わりにメソッドごとに VotingUsers コレクションをクリアしvotingUsers.clear()てから追加し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 (?, ?)

すべてのパラメータが正しい。次のようなクエリが 1 つだけあると予想されます。

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

削除して挿入する代わりに、休止状態に user_topic を更新するように指示するにはどうすればよいですか?

ありがとうございました!

4

1 に答える 1

-2

これは、休止状態の通常の動作だと思います。したがって、実際には何もできません。関係とパラメーターが正しい場合、なぜわざわざするのでしょうか?

于 2013-06-19T14:04:47.463 に答える