bibernate版本是4.3.11.Final,spring是4.3.6.RELEASE
现在我有一个信息表MessageInfo 里面级联了一个SysUser表作为信息创建人,字段的映射实体是这样的:
@ManyToOne(fetch = FetchType.EAGER) //据说在@NotFound下这里本来默认就是EAGER了
@JoinColumn(name = "create_by")
@NotFound(action = NotFoundAction.IGNORE)
private SysUser createBy;
非常诡异的问题是,
1、针对是否懒加载问题。
a、我单独查询数据的时候,这个级联里面的createBy对象是已经取出来,也就是符合(fetch = FetchType.EAGER)的配置
b、我查询多个数据,级联查询出的createBy对象是有的,但是里面是空的,应该是懒加载模式下查询出的数据。应该与查询的条数没有直接关系。
2、针对报错问题
a、我修改一个信息表对应的create_by的值,让数据找不到对应的SysUser,然后通过ID查询这个数据,是可以正常查出数据,并且createBy对象为null。
b、我的查询条件改成通过createBy=‘XXXXX’形式来查数据,就会出现非常常见的级联找不到数据的错误。
我试过把这个“402886835124591601513d91b109081f”加到SysUser中后查询正常。而且我打断点看到查询出来的数据都是懒加载模式的,也就是那个createBy对象是有,但是内容是null。也就是@NotFound这时候没生效才导致报错?