我刚刚开始在 Spring MVC 应用程序中使用 Spring Data REST,以减少为我们的 API 提供 REST HATEOAS 支持所需的工作。
这对于顶级实体几乎立即起作用 - 我们可以在其中返回所有项目、PUT/POST 新项目或按 ID 返回特定项目。
我现在遇到的问题是尝试按照提供的链接显示映射到我返回的实体的集合时。
我抛出了一个“org.hibernate.LazyInitializationException:没有Session” - 我推测是因为它遍历父对象到集合中(这是延迟加载的)。
谷歌搜索该问题建议启用 OpenEntityManagerInViewFilter - 但是我们不愿意为我们的项目启用此功能,因为我们之前有过不好的经历,导致数据库连接死锁。
任何人都可以提供有关我可能缺少的配置选项的提示,或者我在文档中缺少的内容,以便让这些链接正确地导航集合。
问候,
安迪
最佳答案
您可以通过配置强制提前加载(例如使用 JPA 注释):
@Fetch(value = FetchType.EAGER)
或者您可以使用 HQL 的 join fetch
指定每个 select 语句的预先加载
select x from X left join fetch x.y y
关于java - Spring Data REST - 无法延迟加载集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18353287/