java - 数据库延迟获取

标签 java sql

我有一个简单的数据库单向关系:

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/

相关文章:

sql - 数据库 [dbName] 不可访问。 (对象资源管理器)

java - unity : Resolving Android Dependencies freeze. 无法导入任何插件

java - 错误: Exception in thread "JavaFX Application Thread"

java - 按属性对自定义对象的 ArrayList 进行排序

mysql - 计算以特定字母开头的记录

php - 当有新的sql条目时如何将div添加到正确的位置?

c# - 无法将用户定义的数据类型参数添加到我的查询中

sql - Oracle - 创建更新另一个表的触发器时出现问题

java - 我不知道如何为冒泡排序java定义变量

java - 如何将多个客户端连接到单个服务器?