gpt4 book ai didi

java - 使用 Spring Data 和 HIbernate JPA 进行延迟加载

转载 作者:行者123 更新时间:2023-11-30 07:02:15 25 4
gpt4 key购买 nike

我正在使用 SpringData 和 Hibernate 执行一些测试,并在延迟加载和 findBy... 方法上发现了一些有趣的行为。

我在子类上有以下方法。

列出 findByArtistCredit(Long artistCreditId);

以及 Recording 和 ArtistCredit 之间的以下映射...

@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="artist_credit" , referencedColumnName="artist_credit_id")
private ArtistCredit artistCreditReference;

在“一”边……

@OneToMany(fetch=FetchType.LAZY,mappedBy="artistCreditReference")
private Set<Recording> recordings;

发生的事情是急切地获取“Many side”上的集合......

有谁知道“为什么会这样?”

任何答案都是欢迎的。

问候。

最佳答案

通常不应该根据您所做的事情急切地获取它。

recordings 应该是一个延迟加载代理,它只在需要时触发加载。

然而,延迟加载被意外触发是一个常见的错误:

  1. 您可能不小心在代码中访问了该字段,例如,在 toString()/hashCode()/equals() 中.
  2. 您正在通过调试器检查您的对象状态,这将依次触发 toString() 或访问延迟加载字段。

我强烈建议您打开 SQL 加载并检查何时触发延迟加载。 JdbcDsLog 之类的工具,甚至只是打开 Hibernate 的 SQL 记录器应该会有帮助

关于java - 使用 Spring Data 和 HIbernate JPA 进行延迟加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29223784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com