同じサービス(トランザクション)内で同じエンティティをマージ(更新)した後、その子(結合)でエンティティを選択したいとします。私はあなたが更新したオブジェクトをマージすることを知っていますが、このオブジェクトはデータベースのデータを持つすべてのエンティティではなく、更新されたデータを持っています。さらに、マージ後に選択子を実行して、すべての子を持つエンティティを取得しようとすると、更新されたデータのみで更新されたオブジェクトが返されます(残りのフィールドと子エンティティはnullです)。マージ後の選択:Hibernate
解決方法はありますか?サービスには、コミットする前に正しく実行されなければならない多くのデータベース操作があるため、同じトランザクション内のすべてを実行することが必須です。
ありがとうございました。よろしくです。 よろしくお願いします。
あなたのコードを教えてください。マージによって返されたエンティティは、データベースにISが含まれているか、少なくともセッションがフラッシュされた後にデータベースに格納されるものを含む添付エンティティです。残りのフィールドがnullの場合、セッションがフラッシュされるとデータベース内でnullになることを意味します。これは大きな問題があることを意味します。 –
あなたは正しいですが、エンティティの1つのフィールドを更新したいだけなので、このフィールドでエンティティオブジェクトを作成しました。残りはnullです。だから私はあなたの答えを理解することができます、私はすべてのフィールドをエンティティを構築する必要があります...私は更新したいフィールドだけを更新する方法はありません? – user1260893
次に、セッションからエンティティを取得し、フィールドを設定します。 'Foo f = session.get(Foo.class、id); f.setSomeField(newValue); System.out.println( "done"); ' –