文章字数:125,阅读全文大约需要1分钟
用
sql
的脚本生成了数据,再使用jpa
修改数据时出现报错。
分析
看提示发现是
Integer
报了空指针的异常。查看出错位置IntegetType.class
1
2
3public Integer next(Integer current, SessionImplementor session) {
return current + 1;
}查看调用栈,大致定位到
jpa
在进行CAS
修改操作时旧版本号的数据没找到。Versioning.class
1
2
3
4
5
6
7
8public static Object increment(Object version, VersionType versionType, SessionImplementor session) {
Object next = versionType.next(version, session);
if (LOG.isTraceEnabled()) {
LOG.tracef("Incrementing: %s to %s", versionType.toLoggableString(version, session.getFactory()), versionType.toLoggableString(next, session.getFactory()));
}
return next;
}查看
Model
的定义,发现有一个被@version
注解的字段没有被赋值。
解决
在脚本中添加上版本字段的值