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

时间:2012-01-05 20:19:56

标签: java hibernate nullpointerexception long-integer

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

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

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

String referrerAffiliateId = Long.toString(member.getReferral());
if (referrerAffiliateId != null){
    //do something
}

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

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

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

提前致谢!

完整答案:

感谢@Marcelo提供最佳答案。

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

Long referrerAffiliateId = member.getReferral();
if (referrerAffiliateId != null) {
    //...
}

4 个答案:

答案 0 :(得分:4)

异常可能来自Long.toString(),尝试在转换为字符串前检查值:

Long ref = member.getReferral();
if (ref == null) {
  // Do something...
} else {
  String referrerAffiliateId = Long.toString(ref);
  // ...
}

答案 1 :(得分:4)

更改

String referrerAffiliateId = Long.toString(member.getReferral());
if (referrerAffiliateId != null){
    //do something
}

致:

if (member.getReferral() != null){

    String referrerAffiliateId = Long.toString(member.getReferral());
    //do something
}

当您使用空参数调用NullPointerException时,可能会获得Long.toString()

答案 2 :(得分:3)

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

if (member.getReferral() != null)

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

答案 3 :(得分:0)

使用以下代码:

    Long ref = member.getReferral();
    String referrerAffiliateId = null;
    if(ref != null){
    referrerAffiliateId = Long.toString(ref); 
    }