Как обработать нулевое значение, возвращаемое запросом для полей без значения в них и тип данных как целое число

1

У меня есть таблица, к которой я должен был добавить к полям целочисленного типа данных, в последнее время. Я использую hibernate и мою базу данных в PostgreSQL.
Мой запрос на получение объекта, соответствующего таблице, теперь возвращает null для недавно добавленных полей. Я пытаюсь проверить, являются ли они пустыми, и установить 0 если значение равно null. Я не могу найти способ сделать это.... может кто-нибудь помочь.... Запрос hibernate возвращает pojo, соответствующее моей таблице, и я хочу проверить, является ли один из атрибутов в этом pojo null, но этот атрибут является целым числом, и это моя проблема.

  • 0
    Если значение в базе данных может быть NULL, соответствующее поле в сущности должно иметь тип Integer, а не int. Int не может быть нулевым. И ноль, и 0 это две разные вещи.
  • 0
    да, это целое число, но теперь я получаю исключение нулевого указателя из-за этого. Мне нужно проверить, содержит ли это целое число ноль, и я пытаюсь найти решение ... спасибо
Показать ещё 1 комментарий
Теги:
hibernate

3 ответа

0

Я попробовал все ответы, например, установив nullable = true и columnDefinition = "default '0'", но ничего не работало. Поэтому я изменил значение по умолчанию для столбца как 0, это решило проблему.

ПРИМЕЧАНИЕ. Будьте осторожны с возможной потерей информации при изменении значения по умолчанию.

0

Я предлагаю использовать int в POJO вместо Integer. Таким образом, null не попадает в базу данных. Если вам нужно использовать Integer, убедитесь, что вы указали ему начальное значение 0, и если у вас есть какие-либо сеттеры, убедитесь, что входящий аргумент не равен null.

Поэтому либо выполните:

public class MyPOJO {

    private int intVal = 0;
    ...
}

или:

public class MyPOJO {

    private Integer intVal = 0;

    ...

    public void setIntVal(Integer intVal) {
        if(intVal != null) {
            this.intVal = intVal;
        }
    }

    ...

}
0

Если вы хотите, чтобы он 0 если null, вы можете просто указать это значение в объявлении,

Integer a=0;

Если вы используете аннотацию, используйте ее можно по умолчанию. как

@Column(name="col_name", columnDefinition=" default '0' ")

Другим способом может быть метод setter. Если поле является приватным и у вас есть общедоступный метод setter, тогда проверьте значение null в этом установщике

public void setA(Integer a)
{
    if(a==null)
    {
        this.a=0;
    }else this.a=a
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню