У меня есть таблица, к которой я должен был добавить к полям целочисленного типа данных, в последнее время. Я использую hibernate и мою базу данных в PostgreSQL
.
Мой запрос на получение объекта, соответствующего таблице, теперь возвращает null для недавно добавленных полей. Я пытаюсь проверить, являются ли они пустыми, и установить 0
если значение равно null. Я не могу найти способ сделать это.... может кто-нибудь помочь.... Запрос hibernate возвращает pojo, соответствующее моей таблице, и я хочу проверить, является ли один из атрибутов в этом pojo null
, но этот атрибут является целым числом, и это моя проблема.
Я попробовал все ответы, например, установив nullable = true и columnDefinition = "default '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
если 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
}