- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
正在从事一个使用 Spring/JPA/Rest 的项目。我们有一个类,它有一个 @OneToMany 字段(在下面的例子中说 Student ),它被标记为延迟加载。然而,当我们在 postman 中测试输出时,我们看到了类(class)的完整 json 和所有学生的详细信息。
public class CourseList{
private String Course;
//other fields
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private <Set>Student students;
//Getters and Setters
我对延迟加载的理解是,数据库的获取仅在对特定字段的显式调用 时发生。我们应该只看到 json 中出现的类(class)详细信息,而不是地址详细信息。为什么我们也看到地址详细信息?
如果我对 LazyLoading 的理解不正确或者它是否出于某种原因不适用于这种情况,有人可以帮助澄清吗?谢谢。
最佳答案
您的 JSON 库将递归读取对象的所有属性以生成输出。所以它正在访问学生集。
根据我的经验,这里有三种可能的结果:
JSON 序列化发生在 JPA session 之外,因此对象是分离的。由于学生集是延迟加载的,因此您会遇到异常。
JSON 序列化发生在 JPA session 内部,因此当 JSON 库访问学生集时,数据将从数据库中获取。
JSON 序列化发生在 JPA session 之外,但您以某种方式访问了在此之前和 JPA session 内部设置的学生。数据已获取并在分离的对象上可用。
我遇到过这个问题,我强制选择了第三个选项。我的第一次尝试给了我异常(选项 1),但随后我强制从延迟加载集中读取数据以获取 JSON 序列化的数据。
关于java - @LazyLoading 和 JsonOutput,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43579457/
我正在使用 Spring Boot 2 和 Appium 从头开始创建一个新的测试框架。为了编写测试,我使用了 JUnit,它已经包含在 Spring Boot 的 spring-boot-sta
正在从事一个使用 Spring/JPA/Rest 的项目。我们有一个类,它有一个 @OneToMany 字段(在下面的例子中说 Student ),它被标记为延迟加载。然而,当我们在 postman
在 groovy 中使用 JsonOutput.toJson(..) 时如何排除特定字段被序列化? 给定的类: class Dummy { String f1 transient String
我有一个 UTF-8 编码的文件。 我编写了一个 groovy 脚本来加载具有 JSON 结构的文件,对其进行修改并保存: def originPreviewFilePath = "./xxx.jso
在我将 TestNG 更新到 6.14.3 并将 Selenium 更新到 3.13.0 后,我收到上述 Json 异常。我正在使用 ChromeDriver() 进行自动化。这是关于我的代码的简要想
在我将 TestNG 更新到 6.14.3 并将 Selenium 更新到 3.13.0 后,出现上述 Json 异常。我正在使用 ChromeDriver() 进行自动化。以下是关于我的代码的简要说
我是一名优秀的程序员,十分优秀!