В процессе изучения темы, столкнулся с проблемой. Есть CrudRepository и вот такой VersionedEntity:
@Entity
@Table(name = "version_table")
public class VersionedEntity {
@Id
@Column(name = "id")
private int id;
@Column(name = "first_field")
private String firstField;
@Column(name = "second_field")
private String secondField;
public VersionedEntity() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFirstField() {
return firstField;
}
public void setFirstField(String firstField) {
this.firstField = firstField;
}
public String getSecondField() {
return secondField;
}
public void setSecondField(String secondField) {
this.secondField = secondField;
}
@Override
public boolean equals(Object obj) {
return obj instanceof EntityRepository && ((VersionedEntity) obj).id == this.id;
}
}
Почему код:
public static void main(String[] args) {
ApplicationContext ctx = SpringApplication.run(Application.class, args);
EntityRepository repository = (EntityRepository) ctx.getBean("entityRepository");
VersionedEntity entity = repository.findOne(0);
entity.setFirstField("ffsv");
repository.save(entity);
}
вызывает ошибку "Duplicate entry '0' for key 'PRIMARY'"? Вроде бы метод должен проверять наличие объекта с данным id в таблице и в случае наличия делать update. По крайней мере всегда такие фокусы проходили. Тут всю голову сломал. Либо что-то недопонимаю.
Спасибо.