合并后为什么实体ID会增加? [Grails的]

时间:2012-05-29 16:52:52

标签: grails groovy gorm

我想创建一个更新实体的通用代码。这就是我想出的:

def update(id, Object updatedEntity) {
    def entity = findById(id)
    if (entity) {
        updatedEntity.id = id
        def mergedEntity = updatedEntity.merge()
        if (mergedEntity) {
            return mergedEntity
        } else {
            throw new ValidationException("Cannot update.", mergedEntity.errors)
        }
    } else {
        throw new IllegalArgumentException("No ${domainClass.getSimpleName()} with id=${id} found.")
    }
}

为什么mergedEntity总是增加id值(我的意思是updatedEntity.id = 1,然后mergedEntity.id将是2.我该如何解决?

1 个答案:

答案 0 :(得分:0)

我找到了导致所描述行为的原因:我的id参数始终是String的一个实例,所以当我传递id = 1时,实际的id值是“1”并且它不被视为hibernate id

除此之外,为了完成这项工作,我还必须覆盖version属性。