我有两个相同实体类的实例,我正在设置克隆实例的字段。问题是,当我设置克隆对象的字段时,似乎原始对象也被修改。这是正常的吗?
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。
答案 0 :(得分:2)
你真的不应该clone
JPA实体;这可能会使持久性提供程序混淆不清,它可能无法满足您的需求。例如,如果您正在为实体使用代理对象,那么您将clone
代理,并且两者仍将指向它们背后的原始实体。即使你抓住你想要的对象(比如你正在使用AspectJ),这两个克隆仍然具有相同的ID。
相反,您应该考虑为什么要尝试使用clone
并找到一种替代的,不那么片段的表达方法。