0

我有同一个实体类的两个实例,我正在设置克隆实例的一个字段。问题是当我设置克隆对象的字段时,似乎原始对象也被修改了。这正常吗??

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

克隆()方法:

@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 实体;这可能会使持久性提供者无休止地混淆,并且它可能不会做你想做的事。例如,如果您为实体使用代理对象,您将成为clone代理,并且两者仍将指向它们背后的原始实体。即使您抓取了您想要的对象(例如,您正在使用 AspectJ),这两个克隆仍然具有相同的 ID。

相反,您应该考虑为什么要尝试使用clone并找到一种替代的、不那么不稳定的表达方式。

于 2013-09-17T03:09:01.187 回答