如果找不到实体(仅当未找到实体 - EntityNotFound异常),是否有办法设置一些(默认)值?如果DB中存在空值,则该字段必须为null。 例如,我有一个实体First与实体关系第二:
class First {
...
@ManyToOne @JoinColumn(name="second", nullable=true)
@NotFound(action = NotFoundAction.IGNORE)
Second second;
...
}
如果列"秒"在DB(表" First")中为null,则first.second必须为null。如果列"第二"在DB中(表"第一")是5(第二个id = 5)并且表中没有行#34;第二个"如果id == 5,那么firts.second应该是一些默认值(实体),例如实体Second,id = 1或new second(params);
答案 0 :(得分:1)
我希望您通过一对get / set方法访问您的字段。只需在getter中创建空值检查逻辑:
public Second getRelated(){
if( second == null )
return defaultValue;
}
答案 1 :(得分:1)
class First {
...
@ManyToOne @JoinColumn(name="second", nullable=true)
@NotFound(action = NotFoundAction.IGNORE)
Second second;
@Column(name = "second", insertable = false, updatable = false)
private Long secondId;
public Second getSecond(){
if (second == null && secondId != null) {
return defaultSecond;
}
return second;
}
}
如果您想将second
字段本身更改为默认值,则可以添加@PostLoad
回调:
public Second getSecond(){
return second;
}
@PostLoad
private void postLoad() {
if (second == null && secondId != null) {
this.second = defaultSecond;
}
}