0

たとえば、多くのメッセージを持つエンティティ User があります。

このコードでは、ユーザーを取得し、そのコレクションに新しいメッセージを追加してから、次の単純な変更をフラッシュします: session.flush();

User activeUser = userDao.findById(userId);
                Set<Message> messages = activeUser.getMessages();
                messages.add(chatroomModel.getMessage());
                session.flush();

後で、いくつかの基準ですべてのメッセージを取得したいのですが、すべてのメッセージには所有者 (ユーザー) がいますが、最後に挿入されたメッセージにはユーザーがありません。

コミットが行われず、すべてのロジックが同じトランザクションで発生していることに注意してください。私は休止状態を学んでいて、サンプルプロジェクトを構築しようとしているので、春やその他の「クール」なものは使用されていません。ヒントを教えてください-私が間違っていること。ありがとう。

4

1 に答える 1

2

ここでのメッセージは関係の所有者です (データベース テーブル内のユーザー ID を所有しています)。ORM はまだ魔法ではなく、まだリレーションシップ モデルによって制約されています。メッセージを挿入する前に、メッセージのユーザーを指定する必要があります。実際には、追加するだけです。

Message m = chatroomModel.getMessage();
m.setUser(activeUser);
messages.add(m)
于 2013-03-04T17:23:10.840 に答える