Я пробую openjpa и jpa. Все, что у меня есть, это один класс сущностей в качестве соответствующей таблицы в базе данных. одним из атрибутов объекта является имя пользователя, а соответствующая строка в таблице базы данных имеет varchar2 (20). и в моем основном методе я пытался сохранить и экземпляр объекта с именем пользователя длиннее 20. Все, что я делаю, это
em.getTransaction().begin();
em.persist(entity); //entity here is the instance with the username longer than 20
em.getTransaction().commit();
Я попробовал это, надеясь получить какое-то другое исключение, но я не понимаю, почему я получаю исключение optimisticklock.
У меня нет настроек блокировки. Я имею в виду, что использую значения по умолчанию для блокировки свойства.
Кто-нибудь знает, что здесь происходит?
1 ответ
Не уверен, почему это происходит... Я заметил, что исключение OptimisticLockException может возникать в странных случаях...
Добавление поля версии в вашу таблицу и объект часто может улучшить работу OpenJPA с блокировкой...
В свой объектный компонент добавьте это (также добавьте столбец с именем VERSION в свою таблицу):
private Long version;
@Version
@Column(name="VERSION")
public Long getVersion() {
return version;
}
public void setVersion(Long version) {
this.version = version;
}
Надеюсь это поможет...
Похожие вопросы
Новые вопросы
jpa
Java Persistence API (JPA) - это спецификация Java для доступа, сохранения и управления данными между объектами / классами Java и реляционной базой данных. Он является частью спецификации EJB 3.0 и является отраслевым стандартом для Object-Relational Mapping (ORM).