Hibernate 集合为空时OneToMany LazyInitializationException异常
我知道有几十个问题都是同一个主题,但我不明白为什么它们在我的案例中不起作用 我有两个表,一个表名为Account,另一个表名为CustomerRelations,它们之间有一对多的关系,一个帐户可以属于多个CustomerRelations。。。帐户可以不存在其他客户关系,但客户关系只能附加到现有帐户 这是在我的实体类中注释它们的方式: 科目表:Hibernate 集合为空时OneToMany LazyInitializationException异常,hibernate,jpa,jpql,eager,Hibernate,Jpa,Jpql,Eager,我知道有几十个问题都是同一个主题,但我不明白为什么它们在我的案例中不起作用 我有两个表,一个表名为Account,另一个表名为CustomerRelations,它们之间有一对多的关系,一个帐户可以属于多个CustomerRelations。。。帐户可以不存在其他客户关系,但客户关系只能附加到现有帐户 这是在我的实体类中注释它们的方式: 科目表: @OneToMany(mappedBy = "account", cascade = CascadeType.ALL, orphanRemoval =
@OneToMany(mappedBy = "account", cascade = CascadeType.ALL, orphanRemoval = true)
@OnDelete(action = OnDeleteAction.CASCADE)
private List<CustomRel> customRels = new ArrayList<>();
我有一个业务逻辑,我想根据Account选项卡中保存的特定日期调用查询:
@NamedQuery(name = Account.FIND_BY_ACC_NBR, query = "select acc from Account acc where acc.accountNumber =:accountNumber")
此查询提供account表中的正确数据,但对于customerRels字段,我得到以下异常:
**Unable to evaluate the expression Method threw 'org.hibernate.LazyInitializationException' exception.**
在my Account对象上调用getter方法时也是如此:
在我的示例中,有一个account对象的customerRels列表为空。因此,连接到accountId的数据库中没有customerRels记录
据我所知,我的Account实体类中的fetchType默认为lazy,对吗
在创建表的SQL脚本中,CustomerRelations表中只添加了一个account_id,account表中没有对子对象的引用
我知道这是一个很平常的问题,但我需要一些帮助。我应该修改我的JPQL查询吗?OneToMany默认为惰性,您正在访问hibernate会话运行事务之外的集合。即使列表为空,也需要选择来初始化惰性集合。持久性无法知道集合中是否有项,除非它签入数据库 选项: FetchType.EAGER 在JPQL中加入fetchrels r 初始化事务/会话内的集合
OneToMany默认为惰性,您正在访问hibernate sessionrunning事务之外的集合。即使列表为空,也需要选择来初始化惰性集合。持久性无法知道集合中是否有项,除非它签入数据库 选项: FetchType.EAGER 在JPQL中加入fetchrels r 初始化事务/会话内的集合
FetchType.Earge解决了我的问题。另外,我必须将@JoinColumn添加到我的manytone实体字段中。非常感谢。FetchType.Earge解决了我的问题。另外,我必须将@JoinColumn添加到我的manytone实体字段中。非常感谢。
**Unable to evaluate the expression Method threw 'org.hibernate.LazyInitializationException' exception.**