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
として実装されます。NamedQuery
from Content c where c.str = :str
グループとコンテンツの両方が新しく、一部のグループが同じ (新しい) コンテンツを参照するインポートを実行すると、findByStr
クエリが を返すように見えますNULL
。
クエリはこのシナリオ以外では正常に動作しますが、コンテンツ オブジェクトが作成されたがコミットされていない場合、クエリはそれらを検出しません。
現在、これを回避するためにMap<String, Content>
、クエリが を返すかどうかを再確認していますNULL
。