Как определить, действительно ли тип long равен NULL? - PullRequest
5 голосов
/ 06 января 2012

В нашей базе данных MySQL есть столбец с нулевым значением (тип long) (с именем referral)Мы используем hibernate для ORM.

Я пытаюсь получить значение столбца для данного члена.Некоторые из них имеют значение null, а если это не так, то это идентификатор, указывающий на другого члена, который является реферером.

Проблема заключается в коде Java, который я пытаюсь определить, является ли столбец этого элемента нулевым, если нет,сделать что-нибудь.

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

member.getReferral () возвращает значение (тип long) столбца ссылок.Некоторые из этих столбцов являются нулевыми, а некоторые нет.

Приведенный выше код компилируется нормально, но я получаю исключение nullPointerException при вызове метода для пользователя, у которого столбец ссылок имеет значение null.

Как сделатьЯ правильно делаю обнаружение на этом?

Заранее спасибо!

Полный ответ:

Спасибо @Marcelo за лучший правильный ответ.

Вот код в его окончательном состоянии:

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

Ответы [ 4 ]

4 голосов
/ 06 января 2012

Изменение

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() с нулевым параметром.

4 голосов
/ 06 января 2012

Исключение, вероятно, происходит от Long.toString(), попробуйте проверить значение перед преобразованием в строку:

Long ref = member.getReferral();
if (ref == null) {
  // Do something...
} else {
  String referrerAffiliateId = Long.toString(ref);
  // ...
}
3 голосов
/ 06 января 2012

Если member.getReferral() возвращает Long, используйте:

if (member.getReferral() != null)

В Hibernate, если вы хотите иметь возможность обнаруживать обнуляемость в свойстве, вы не должны использовать примитивные типы, потому что они всегда будут иметь значение по умолчанию. 0 для длинных.

0 голосов
/ 06 января 2012

используйте ниже код:

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