【发布时间】:2012-07-02 23:35:19
【问题描述】:
我正在构建一个 grails 应用程序,其中包含分配了 id 生成器的域类(也就是说,它们不会自动生成)。假设我有一个域类 Parent,static hasMany = [children: Child] 和域类 Child。
我正在尝试使用 Parent.findWhere(propertyMap) 定位 Parent 的实例,但收到 NonUniqueObjectException 指示已经有一个与此会话关联的 Child 实例,其 ID 为 0。我的 propertyMap 不包含id 的条目。
现在,当我尝试在会话中保存一个类的两个实例而不设置它们的 id 时,我习惯于得到这个错误。因为 id 不是自动生成的,所以它们默认为零,这允许保存第一个,第二个抛出错误,因为 id 是第一个的副本。令我惊讶的是,我试图找到一个实例,而不是保存一个实例......有谁知道可能导致这种行为的原因以及我如何在仍然使用我的属性映射进行搜索的同时绕过它?
【问题讨论】:
-
试试“findAllWhere”看看它会返回什么。
-
相同。我有一种感觉
findAllWhere和findWhere要么相互依赖,要么具有相同的实现,除了返回的结果数量......
标签: hibernate grails orm grails-orm