上次碰到一个问题:jpa 一对多单向关联 插入问题
无法正常插入,,今天又碰到一个无法查询的问题。。
one--many的时候,many的这个外键为null的时候,并且many方设置FetchType.EAGER(其实manttoone默认值也是EAGER,详细可见http://www.java1995.cn/article/936.html ),
却发现数据库明明有的数据却查询不出来。。纠结,想起了上次的插入问题,
看看了
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "chapter", nullable = false, insertable = false, updatable = false)
看到个nullable=false这个选项,但在数据库中的这个字段是为null值,于是把nullable设置为true,再查询的时候就出现值了。。
上面既然nullable=false,又是怎么插入null值的呢?其实在插入的时候是通过下面的这个属性插入的。。看看它们的annotation,就明白了。
@Column(name = "chapter", unique = false, nullable = true, insertable = true, updatable = true, length = 11)
public java.lang.Integer getChapter() {
return this.chapter;
}
两处明显的不同。