0

同じエンティティ クラスの 2 つのインスタンスがあり、複製されたインスタンスのフィールドを設定しています。問題は、複製されたオブジェクトのフィールドを設定すると、元のオブジェクトも変更されているように見えることです。これって普通ですか??

Corretora clone = original.clone();
clone.setNome(nome);

clone() メソッド:

@Override
public Corretora clone()  {
    Corretora c = new Corretora();
    c.setCodigo(codigo);
    c.setDescricao(descricao);
    c.setId(id);
    c.setNome(nome);
    return c;
}

ここで、codigo は String、descricao は String、id は Long、nome は String です。

4

1 に答える 1

2

cloneJPA エンティティを ing するべきではありません。これは、永続化プロバイダーを際限なく混乱させる可能性があり、期待どおりに機能しない可能性があります。たとえば、エンティティにプロキシ オブジェクトを使用している場合は、プロキシを使用cloneすることになりますが、どちらもその背後にある元のエンティティを指します。必要なオブジェクトを取得した場合でも (たとえば、AspectJ を使用している場合)、2 つのクローンは同じ ID のままです。

代わりに、なぜそれを使用しようとしているのかを考え、cloneそれを表現するためのより不安定でない別の方法を見つける必要があります。

于 2013-09-17T03:09:01.187 に答える