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。