列中不允许空值 - 旧数据库
Null values not allowed in column - legacy database
我有一个无法更改的遗留 DB2 数据库。它无法保存空值,因此所有为空的外键都设置为零 (0)。
虽然阅读这篇文章没问题,但我只是将未找到的操作设置为忽略,它 returns 我 null 而不是子对象。
但反过来我遇到了问题。当我想保存一个空对象时,它应该将我的 table 中的外键设置为 0,但它不知道该怎么做,并向我抛出“不允许空值”异常。
@OneToOne()
@NotFound(action = NotFoundAction.IGNORE)
@JoinColumn(name = "robj02", referencedColumnName = "objnr")
private Objekt robj02;
有没有办法定义默认值或类似的东西?有没有人有想法帮助我?
肮脏的 hack 但类似
void setRobj02(Objeckt robj02) {
this.robj02 = (robj02 != null)
? robj02
: Objekt.ZERO // you should create it first
}
您可以通过以下方式更正您的映射:
@Entity
public class YourEntity
{
@Column(name = "robj02")
private Long objektId;
@OneToOne
@NotFound(action = NotFoundAction.IGNORE)
@JoinColumn(name = "robj02", referencedColumnName = "objnr", insertable = false, updatable = false)
private Objekt robj02;
// getters/setters
}
然后按照以下方式坚持下去:
YourEntity entity = new YourEntity();
entity.setObjektId(0L);
// ...
entityManager.persist(entity);
我有一个无法更改的遗留 DB2 数据库。它无法保存空值,因此所有为空的外键都设置为零 (0)。
虽然阅读这篇文章没问题,但我只是将未找到的操作设置为忽略,它 returns 我 null 而不是子对象。
但反过来我遇到了问题。当我想保存一个空对象时,它应该将我的 table 中的外键设置为 0,但它不知道该怎么做,并向我抛出“不允许空值”异常。
@OneToOne()
@NotFound(action = NotFoundAction.IGNORE)
@JoinColumn(name = "robj02", referencedColumnName = "objnr")
private Objekt robj02;
有没有办法定义默认值或类似的东西?有没有人有想法帮助我?
肮脏的 hack 但类似
void setRobj02(Objeckt robj02) {
this.robj02 = (robj02 != null)
? robj02
: Objekt.ZERO // you should create it first
}
您可以通过以下方式更正您的映射:
@Entity
public class YourEntity
{
@Column(name = "robj02")
private Long objektId;
@OneToOne
@NotFound(action = NotFoundAction.IGNORE)
@JoinColumn(name = "robj02", referencedColumnName = "objnr", insertable = false, updatable = false)
private Objekt robj02;
// getters/setters
}
然后按照以下方式坚持下去:
YourEntity entity = new YourEntity();
entity.setObjektId(0L);
// ...
entityManager.persist(entity);