У меня есть существующий JPA (EclipseLink) проект, где желаемое поведение состоит в том, что, если дали нулевое значение в поле для объекта, что нулевое значение не должно быть сохранено.
Вариант использования - то, что мы можем получить несколько частичных обновлений этих объектов из внешних источников. Те источники могут дать нам нулевое значение, которое не означает, "аннулируют это поле", это означает, что "У меня нет этого значения".
Существует ли аннотация, шаблон или другой инструмент, который может использоваться для автоматизации пустого указателя, регистрируется в методе set ИЛИ говорит JPA не сохранять нулевые значения????
Я могу пройти КАЖДЫЙ метод set в КАЖДОМ объекте и добавить if(val != null) { //set the value }
но это является утомительным и повторяющимся.
Например, мы имеем:
@Entity
@Table(name = "my_table")
public class MyObject {
@Column
private String myColumn;
public String getMyColumn() {
return this.myColumn;
}
public void setMyColumn(String val) {
this.myColumn = val;
}
}
Я хотел бы иметь что-то, что автоматически поможет как это:
@Entity
@Table(name = "my_table")
public class MyObject {
@Column
@DontPersistIfNull
private String myColumn;
public String getMyColumn() {
return this.myColumn;
}
public void setMyColumn(String val) {
this.myColumn = val;
}
}
ИЛИ это:
@Entity
@Table(name = "my_table")
public class MyObject {
@Column
private String myColumn;
public String getMyColumn() {
return this.myColumn;
}
public void setMyColumn(String val) {
//AUTOGENERATED NULL CHECK
if(val != null) {
this.myColumn = val;
}
}
}
Используйте макрос ...
#define SIZEOF_ARRAY( arr ) sizeof( arr ) / sizeof( arr[0] )
У него также будет бонус работы на любой массив Тип данных :)
-121--3027974- Hibernate Validator (и любая реализация javax.validation
) имеет аннотацию @notnull
@Notnull @notnation . Если аннотированное свойство ноль. Я не уверен в Hibernate-Validator
будет работать с EclipseLink, но должна быть реализация javax.validation
для EclipseLink.
Но если вы хотите заблокировать настройки NULLS - ну, затем измените слой, который устанавливает значения, а не сами объекты.
Не уверены, если это ответ, вы ищете, но вы проверили NULL объекта дизайн объекта шаблон конструкции