我有一个简单的数据库单向关系:
public class Bill{
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn( name="BILL_ACTOR" )
private fr.teamwill.cbm.model.actor.Actor actor;
}
我需要获取 Actor 的电子邮件,但是当我这样做时,我得到了关于懒惰的异常:
bill.getActor().getEmail() ---> exception
请你给我一个sql请求来获取 Actor ,我的数据库有点弱,这是我想到的:
select a.email From Bill b , Actor a fetch join ?????? or inner join??
请给我请求,非常感谢
最佳答案
您无法获取 actor 数据,因为您已将其设置为 LAZY 获取类型。
对于您请求的查询,可以是
SELECT a.email
FROM Bill b, Actor a
WHERE b.BILL_ACTOR = a.id
<小时/>
我很好奇为什么您要为此属性设置 LAZY 获取类型。
像往常一样,LAZY 模式应该应用于重负载数据。在您的情况下,它应该应用于 Actor
类中的 bills
属性。
这是一个例子
public class Bill {
@ManyToOne
@JoinColumn( name="BILL_ACTOR" )
private fr.teamwill.cbm.model.actor.Actor actor;
}
public class Actor {
//...
@OneToMany(fetch=FetchType.LAZY)
private List<Bill> bills
}
关于java - 数据库延迟获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60601776/