IDを持っている以前に永続化されたオブジェクトを、最初に取得しなくても更新できるようにしたいと思います。私が避けようとしている主なことは、オブジェクトがデータベースから取得されたときに、オブジェクトのフィールドに複数の値をコピーする必要があることです。これらの値はフィールド名に対応するキーを持つマップにあるので、マップを引数としてコンストラクターを介してオブジェクトを作成するのは簡単です。残念ながら、この方法で作成されたオブジェクトは、idフィールドが既存のレコードのIDフィールドに設定されていても、保存すると新しいデータベースレコードになります。
私は現在、 Groovyクラスのプロパティをコピーするために、ここに示されている例の1つにわずかなバリエーションを使用していますが、複数の理由から、あまり洗練されたソリューションではありません。
基本的に私はこのようなことをしたいと思っています:
class Foo {
int a
String b
}
def data = [id: 99, a: 11, b: "bar"] //99 is the id of an existing record
def foo = new Foo(data)
foo.update() //or some other comparable persistence mechanism
ありがとう