我有一个类似于以下的实体:
@Entity
@Table( name="marchi", uniqueConstraints=@UniqueConstraint(columnNames="codice") )
public class Marchio implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
private String codice;
private String nome;
//...
}
我用codice = 123创建了一个Marchio,然后我坚持它。好的!
然后我通过查询从数据库中检索它,用某些东西编辑“nome”属性并调用merge()。好的!
然后我用codice = 123 创建另一个Marchio。我在 nome 中放了一些东西并调用merge()。
结果是:
ConstraintViolationException:键“代码”的重复条目“123”
很好,其实我可以使用第一种方式:查询、编辑属性名和合并。
考虑一下我不仅有“名字”。我有 35 个不同的属性,所以我不想:
Marchio m = em.findCodice("123");
m.setP1("1");
m.setP2("2");
...
m.setPN("N");
em.merge(m);
我能怎么做?