0

エンティティを更新するための汎用コードを作成したいと考えています。これが私が思いついたものです:

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値が増加するのですか (つまり、 if updatedEntity.id = 1、 thenmergedEntity.idは 2 になります。どうすれば修正できますか?

4

1 に答える 1

0

説明されている動作の原因がわかりました。idパラメーターは常に String のインスタンスであるため、id = 1 を渡すと、実際の id 値は "1" になり、 hibernate として扱われませんid

versionこれに加えて、これを機能させるには、プロパティもオーバーライドする必要がありました。

于 2012-05-30T20:47:55.357 に答える