有没有一种方法,以prevent空值从同时允许其他正在通过持续? [英] Is there a way to prevent null values from being persisted while allowing others through?

查看:102
本文介绍了有没有一种方法,以prevent空值从同时允许其他正在通过持续?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个现有的JPA(的EclipseLink)项目中所期望的行为是,如果一个字段中给出一个空值的实体,即空值不应保留。

用例是,我们可能会从外部来源这些实体的几个部分更新。这些来源可能会给我们一个空值,这并不意味着废除这一领域,它的意思是我没有这个价值。

有一个注释,图形或其他工具,可用于自动在二传手空支票或者告诉JPA不要坚持空值????

我可以通过每一个二传手在每一个实体,并添加如果(VAL!= NULL){//设置的值} 但这是繁琐和重复。

例如,我们有:

 
@实体
@Table(NAME =my_table的)
公共类为MyObject {
 @柱
 私人字符串myColumn; 公共字符串getMyColumn(){
  返回this.myColumn;
 } 公共无效setMyColumn(字符串VAL){
  this.myColumn = VAL;
 }
}

我想有一些会自动帮这样的:

 
@实体
@Table(NAME =my_table的)
公共类为MyObject {
 @柱
 @DontPersistIfNull
 私人字符串myColumn; 公共字符串getMyColumn(){
  返回this.myColumn;
 } 公共无效setMyColumn(字符串VAL){
  this.myColumn = VAL;
 }
}

或者这样:

 
@实体
@Table(NAME =my_table的)
公共类为MyObject {
 @柱
 私人字符串myColumn; 公共字符串getMyColumn(){
  返回this.myColumn;
 } 公共无效setMyColumn(字符串VAL){
  //自动生成的空检查
  如果(VAL!= NULL){
   this.myColumn = VAL;
  }
 }
}


解决方案

Hibernate验证(和 javax.validation )具有 @NotNull 标注,将不允许该实体将如果注解坚持的任何实现属性为null。我不知道的休眠-验证将与EclipseLink的工作,但应该有 javax.validation 的实施对于的EclipseLink也是如此。

但是,如果你想阻止设置空 - 。好,然后修改设置值,而不是实体层本身

I have an existing JPA (EclipseLink) project where the desired behaviour is that if given a null value in a field for an entity, that null value should not be persisted.

The use case is that we may get several partial updates to these entities from external sources. Those sources may give us a null value, that does not mean "nullify this field" it means "I don't have this value".

Is there an annotation, pattern, or other tool that can be used to automate a null check in the setter OR tell JPA to not persist null values????

I can go through EVERY setter in EVERY entity and add if(val != null) { //set the value } but that is tedious and repetitive.

For example we have:


@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;
 }
}

I would like to have something that would automatically help like this:


@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;
 }
}

OR this:


@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;
  }
 }
}

解决方案

Hibernate validator (and any implementation of javax.validation) has the @NotNull annotation, which will disallow the entity to be persisted if the annotated property is null. I'm not sure of hibernate-validator would work with EclipseLink, but there should be an implementation of javax.validation for EclipseLink as well.

But if you want to block setting nulls - well, then modify the layer that sets the values, rather than the entities themselves.

这篇关于有没有一种方法,以prevent空值从同时允许其他正在通过持续?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆