我有一个用于将数据导入多对多结构的应用程序。
@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
。