0

ManyToMany 構造にデータをインポートするためのアプリがあります。

    @Table(name="content")
    class Content {
      @Column(.., unqiue=true)
      String str;
    }

    @Table(name="group")
    class Group {
      @JoinTable("group_content"..)
      List<Content> contentList;
    } 

には、アプリがデータベースに既に存在するコンテンツを識別するために使用Contentする一意の列str(上記を参照) があります。存在する場合は、エンティティを再度追加するのではなく、再利用します。

これは、実装のfindByStr(String str)メソッドで行われます。( )ContentDaoとして実装されます。NamedQueryfrom Content c where c.str = :str

グループとコンテンツの両方が新しく、一部のグループが同じ (新しい) コンテンツを参照するインポートを実行すると、findByStrクエリが を返すように見えますNULL

クエリはこのシナリオ以外では正常に動作しますが、コンテンツ オブジェクトが作成されたがコミットされていない場合、クエリはそれらを検出しません。

現在、これを回避するためにMap<String, Content>、クエリが を返すかどうかを再確認していますNULL

4

1 に答える 1