在JPA中设置不同实体的字段

时间:2013-09-17 02:59:10

标签: java jpa

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

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。

1 个答案:

答案 0 :(得分:2)

你真的不应该clone JPA实体;这可能会使持久性提供程序混淆不清,它可能无法满足您的需求。例如,如果您正在为实体使用代理对象,那么您将clone代理,并且两者仍将指向它们背后的原始实体。即使你抓住你想要的对象(比如你正在使用AspectJ),这两个克隆仍然具有相同的ID。

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