如何检测long类型是否实际为NULL?

UpH*_*lix 5 java hibernate nullpointerexception long-integer

我们的MySQL数据库中有一个可空(类型为长)列(名为referral).我们使用hibernate进行ORM.

我试图获取给定成员的列的值.有些是null,如果不是,它的id指向另一个成员,它是引用者.

问题是在我试图检测的java代码中,如果该成员的列为null,如果没有,则执行某些操作.

String referrerAffiliateId = Long.toString(member.getReferral());
if (referrerAffiliateId != null){
    //do something
}
Run Code Online (Sandbox Code Playgroud)

member.getReferral()返回引用列的值(类型long).其中一些列为空,有些则不为.

上面的代码编译得很好,但是当我在引用列为null的用户上调用该方法时,我得到一个nullPointerException.

我如何正确地对此进行检测?

提前致谢!

完整答案:

感谢@Marcelo提供最佳答案.

以下是处于最终状态的代码:

Long referrerAffiliateId = member.getReferral();
if (referrerAffiliateId != null) {
    //...
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*elo 4

假设member.getReferral()返回 a Long,使用:

if (member.getReferral() != null)
Run Code Online (Sandbox Code Playgroud)

在 Hibernate 中,如果您希望能够检测属性中的可空性,则不得使用原始类型,因为它们始终具有 long 的默认值0

  • @Dale 如果您想使用 Hibernate 检测引用属性的可为空性,则必须将该属性的数据类型更改为 Long。否则,当列值为 null 时,member.getReferral() 将返回 0。 (3认同)