java - Spring Data REST - 无法延迟加载集合

标签 java rest spring-mvc hateoas spring-data-rest

我刚刚开始在 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/

相关文章:

java - 使用带有 Spring Boot 的 Spock 测试框架来测试我的 REST Controller

android - 受信任应用程序的 Secure Rest API

java - 非法访问: this web application instance has been stopped already

java - 使用 Android Studio : NoClassDefFoundError: org/testng/TestNG 进行测试

java - 如何在默认 Android Studio 抽屉导航中的 Fragments 之间切换

rest - REST API 中的外键约束

java - Jetty应用服务器热部署

java - NetBeans 生成有错误的 JpaController

java - 从 @ExceptionHandler 重定向不起作用

java - 所有页面的字体大小