openjpa бросает оптимистическое исключение блокировки - PullRequest
0 голосов
/ 11 марта 2011

Я пытаюсь 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 Ответ

0 голосов
/ 11 марта 2011

Не уверен, почему это происходит ... Я заметил, что исключение OptimisticLockException может быть выдано в странных случаях ...

Добавление поля версии в вашу таблицу и сущность часто может заставить OpenJPA лучше работать с блокировкой ...

Добавьте в свой компонент управления данными (также добавьте столбец с именем VERSION в вашу таблицу):

private Long version;
@Version
@Column(name="VERSION") 
public Long getVersion() {
    return version;
}
public void setVersion(Long version) {
    this.version = version;
}

Надеюсь, это поможет ...

...