SpringBoot通过jpa查询返回报错failed to lazily initialize a collection of role

先贴上报错的图:

SpringBoot通过jpa查询返回报错failed to lazily initialize a collection of role

 

 报错出现的原因是,我要查询系统用户,使用jpa的findbyid查询,返回结果就会报错,系统用户的实体类是这样写的:

@Entity
@Data
@Table(name = "gspuser")
public class EsgspuserEntity {
@Id
@Column(name = "id",insertable=false,updatable=false)
private String id;
@Column(name = "code",insertable=false,updatable=false)
private String code;
@Column(name = "firstname_chs",insertable=false,updatable=false)
private String firstnameChs;
@Column(name = "firstname_cht",insertable=false,updatable=false)
private String firstnameCht;
@Column(name = "firstname_en",insertable=false,updatable=false)
private String firstnameEn;
@Column(name = "firstname_es",insertable=false,updatable=false)
private String firstnameEs;
@Column(name = "firstname_pt",insertable=false,updatable=false)
private String firstnamePt;
@Column(name = "lastname_chs",insertable=false,updatable=false)
private String lastnameChs;
@Column(name = "lastname_cht",insertable=false,updatable=false)
private String lastnameCht;
@Column(name = "lastname_en",insertable=false,updatable=false)
private String lastnameEn;
@Column(name = "lastname_es",insertable=false,updatable=false)
private String lastnameEs;
@Column(name = "lastname_pt",insertable=false,updatable=false)
private String lastnamePt;
@Column(name = "middlename_chs",insertable=false,updatable=false)
private String middlenameChs;
@Column(name = "middlename_cht",insertable=false,updatable=false)
private String middlenameCht;
@Column(name = "middlename_en",insertable=false,updatable=false)
private String middlenameEn;
@Column(name = "middlename_es",insertable=false,updatable=false)
private String middlenameEs;
@Column(name = "middlename_pt",insertable=false,updatable=false)
private String middlenamePt;
@Column(name = "name_chs",insertable=false,updatable=false)
private String nameChs;
@Column(name = "name_cht",insertable=false,updatable=false)
private String nameCht;
@Column(name = "name_en",insertable=false,updatable=false)
private String nameEn;
@Column(name = "name_es",insertable=false,updatable=false)
private String nameEs;
@Column(name = "name_pt",insertable=false,updatable=false)
private String namePt;
@Column(name = "sysorgid",insertable=false,updatable=false)
private String sysorgid;
@Column(name = "tenantid",insertable=false,updatable=false)
private Integer tenantid;
private String sex;
@OneToMany
@JoinColumn(name = "userid")
private List<EsgspuserextendEntity> esgspuserextendEntityList;
}
可以看到在最后一个属性上,有@OneToMany的注解,根据在网上查询的结果,是查询懒加载导致的,这个时候需要在这个注解加上
@OneToMany(mappedBy="user",fetch=FetchType.EAGER)
我修改之后,程序还是报错,报错内容是和事务回滚有关系,我没有继续解决这个错误,又回去思考怎么解决原来的问题
因为我只需要系统用户的名字,所以我只要返回名字这个值即可,在修改了程序之后,果然没有继续报错。
此文只是为了记录工作中的问题,后续继续补充报错的原因和解决办法

SpringBoot通过jpa查询返回报错failed to lazily initialize a collection of role

上一篇:进程的状态 & 线程的同步和互斥


下一篇:springboot使用redis(从配置到实战)