我们的MySQL数据库中有一个可空(类型为long)的列(命名为referral)。我们使用hibernate进行ORM。
我正在尝试获取给定成员的列的值。有些是空的,如果不是,它是指向另一个成员的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) {
//...
}发布于 2012-01-05 20:22:59
假设member.getReferral()返回一个Long,请使用:
if (member.getReferral() != null)在Hibernate中,如果希望能够检测属性中的空值,就不能使用基元类型,因为它们总是具有默认值0。
发布于 2012-01-05 20:22:29
异常可能来自Long.toString(),请尝试在转换为字符串之前检查该值:
Long ref = member.getReferral();
if (ref == null) {
// Do something...
} else {
String referrerAffiliateId = Long.toString(ref);
// ...
}发布于 2012-01-05 20:22:56
变化
String referrerAffiliateId = Long.toString(member.getReferral());
if (referrerAffiliateId != null){
//do something
}至:
if (member.getReferral() != null){
String referrerAffiliateId = Long.toString(member.getReferral());
//do something
}当您使用null参数调用NullPointerException时,很可能会得到Long.toString()。
https://stackoverflow.com/questions/8749186
复制相似问题