【问题标题】:How to resolve NullPointerException when updating database更新数据库时如何解决 NullPointerException
【发布时间】:2020-01-29 10:23:43
【问题描述】:

我是 jooq 新手。我正在尝试将用户表中名为帐户状态的列从 UNLOCKED 更新为 LOCKED。我正在使用 Jooq 的 dslContext 使用更新查询。

我在我的控制器中调用这个 updateAccountStatus 方法。但是这个方法给了我一个 NullPointerException。

public boolean updateAccountStatus(String userhandle,UsersAccStatus usersAccStatus) { 
try {
dslContext
                    .update(USERS)
                    .set(USERS.ACC_STATUS,UsersAccStatus.LOCKED)
                    .where(USERS.USER_HANDLE.equal(userHandle))
                    .execute();
 }
catch(Exception e) {
// code
}
}

我希望此方法的输出能够更新我数据库中的 account_status 枚举。 错误信息:-

java.lang.NullPointerException: null
    at com.core.admin.controller.AdminAccountStatus.execute(AdminAccountStatus.java:84) ~[classes/:na]

任何帮助将不胜感激。

【问题讨论】:

  • 您确定要在此处显示与您的 NPE 相关的整个代码吗? NPE 发生在您的 AdminAccountStatus.execute() 方法中,但您没有从显示的逻辑中调用该方法。

标签: mysql spring-boot jooq


【解决方案1】:

1) 在下一行中,您直接使用类 UsersAccStatus,如果您已将 LOCKED 声明为静态,则可以,否则您必须使用类的对象 (UsersAccStatus)这是usersAccStatus(小写字母)

2) 修改如下代码

来自:

.set(USERS.ACC_STATUS,UsersAccStatus.LOCKED)

收件人:

 .set(USERS.ACC_STATUS,usersAccStatus!=null ? null : usersAccStatus.LOCKED)

如果这对你有用,请告诉我。

问候, 阿努拉格

【讨论】:

  • 嗨。我试过你说的。我仍然收到 NullPointerException。您需要任何其他信息吗?而且我没有将 LOCKED 声明为静态的..
  • 您好,您能否分享一下日志的堆栈跟踪,并准确突出显示您在哪一行出现错误?根据您的评论,它说错误在 AdminAccountStatus.java:84 行,但哪一行是 84?请在此处复制该行。
猜你喜欢
  • 2020-01-31
  • 1970-01-01
  • 1970-01-01
  • 2020-08-30
  • 2014-01-28
  • 1970-01-01
  • 2012-08-31
  • 2017-03-04
  • 2018-04-25
相关资源
最近更新 更多