我有一个繁重的使用域类Relationship
,看起来非常类似于跟随一个
class Relationship {
Element source
Element destination
Type type
// other properties omitted
static constraints = {
type unique: ['source', 'destination']
}
}
我有一个服务创建这个域类的新实例,它检查现有实例,如果发现重用它们,但我想在数据库中实现一种带有唯一约束的乐观插入,因为
因此,我们的想法是让save
方法失败,而不是重用现有的实体
try {
relationshipInstance.save()
} catch (DataIntegrityViolationException | ConstraintViolationException e) {
// find and reuse
}
但是当我试图找到实体时,我得到了hibernate异常
AssertionFailure: null id in Relationship entry (don't flush the Session after an exception occurs)
relationshipInstance.discard()
没有帮助,因为它没有EntityKey
)?答案 0 :(得分:0)
您可以在调用save时禁用验证,如下所示:
relationshipInstance.save(validate:false)
有关详细信息,请参阅documentation for save method。