我们的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) {
//...
}
答案 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);
}