Я учусь ebean, чтобы начать Я тестирование кода примеров на официальном сайте, так что у меня есть этот код:Avaje Ebean: Почему он вставляет объект с тем же идентификатором вместо обновления объекта?
ESimple e = new ESimple();
e.setName("test");
e.setDescription("something");
// will insert
Ebean.save(e);
e.setDescription("changed");
// this will update
Ebean.save(e);
// find the inserted entity by its id
ESimple e2 = Ebean.find(ESimple.class, e.getId());
System.out.println("Got "+e2.getDescription());
Ebean.delete(e);
ESimple является этот простой класс:
@Entity
@Table(name="e_junktable")
public class ESimple {
@Id
Integer id;
String name;
String description;
@Version
Timestamp lastUpdate;
// getters, setters
}
Выполнение кода выше я получаю эту ошибку из журналов:
txn[1003], 15:32:11.019, insert into e_junktable (id, name, description) values (?,?,?)
txn[1003], 15:32:11.019, Binding Insert [e_junktable] set[id=1, name=test, description=something, ]
txn[1003], 15:32:11.024, Inserted [ESimple] [1]
txn[1004], 15:32:11.024, insert into e_junktable (id, name, description) values (?,?,?)
txn[1004], 15:32:11.024, Binding Insert [e_junktable] set[id=1, name=test, description=changed, ]
txn[1004], 15:32:11.039, ERROR executing DML bindLog[Binding Insert [e_junktable]
set[id=1, name=test, description=changed, ]] error[Unique index or primary key violation: "PRIMARY_KEY_C ON PUBLIC.E_JUNKTABLE(ID)"; SQL statement:\n insert into e_junktable (id, name, description) values (?,?,?) [23505-170]]
ошибка находится на втором Ebean.save(e)
.
Кажется, что он не обновляет объект в базе данных, а вместо этого пытается вставить новый с тем же идентификатором, почему?
Я использую ebean 2.7.7, h2 1.3.170 как базу данных.
Спасибо за помощь
Мне не хватало для улучшения классов. Спасибо за помощь. – res1