openjpa抛出异常
我正在尝试openjpa和jpa。我只有一个实体类作为数据库中的对应表。实体的属性之一是username,db表中相应的行具有varchar220。在我的主要方法中,我试图持久化用户名大于20的实体实例。 我所做的就是openjpa抛出异常,jpa,openjpa,optimistic-locking,Jpa,Openjpa,Optimistic Locking,我正在尝试openjpa和jpa。我只有一个实体类作为数据库中的对应表。实体的属性之一是username,db表中相应的行具有varchar220。在我的主要方法中,我试图持久化用户名大于20的实体实例。 我所做的就是 em.getTransaction().begin(); em.persist(entity); //entity here is the instance with the username longer than 20 em.getTransaction().commit()
em.getTransaction().begin();
em.persist(entity); //entity here is the instance with the username longer than 20
em.getTransaction().commit();
我尝试了这个,希望得到一些其他类型的异常,但我不知道为什么我会得到异常
我没有任何锁定设置。我的意思是我正在使用锁定属性的默认值
有人知道这里发生了什么吗?不知道为什么会发生这种情况……我注意到乐观锁异常可以在奇怪的情况下抛出 在表和实体中添加一个版本字段通常可以使OpenJPA更好地使用锁定 在您的实体bean中添加此项,并将名为VERSION的列添加到表中:
private Long version;
@Version
@Column(name="VERSION")
public Long getVersion() {
return version;
}
public void setVersion(Long version) {
this.version = version;
}
希望这有帮助……不,它不起作用。我试过了,如果我使用正确的数据,效果会很好。假设,如果持久化一个新实例,它工作正常,并且版本设置为1。接下来,如果检索该行并进行一些更改,它同样工作正常,版本会自动增加到2。抱歉,错误地按enter键。并且,当尝试持久化并使用无效数据(例如值为、字符串为、字符数超过20的字段)执行实例时,它再次抛出相同的OptimisticLockException。我在想,一个更合适的异常会对我有帮助。你发布整个堆栈跟踪和实体怎么样?什么版本的OpenJPA?您如何增强您的实体?