0%

java-lang-NullPointerException-at-org-hibernate-type-LongType-next(Lon

文章字数:125,阅读全文大约需要1分钟

sql的脚本生成了数据,再使用jpa修改数据时出现报错。

分析

  1. 看提示发现是Integer报了空指针的异常。查看出错位置
    IntegetType.class

    1
    2
    3
    public Integer next(Integer current, SessionImplementor session) {
    return current + 1;
    }
  2. 查看调用栈,大致定位到jpa在进行CAS修改操作时旧版本号的数据没找到。
    Versioning.class

    1
    2
    3
    4
    5
    6
    7
    8
    public 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;
    }
  3. 查看Model的定义,发现有一个被@version注解的字段没有被赋值。

解决

在脚本中添加上版本字段的值