我遇到了一个问题,JPA试图在我不想要的时候延迟加载我的数据。从本质上讲,正在发生的事情是我正在使用Service检索一些数据,并且当我将这些数据解析为JSON时,JSON库正在触发hibernate模式以尝试懒惰地加载数据。有什么办法可以阻止这种情况?我在下面给出一个例子。
// Web Controller method public String getEmployeesByQuery(String query) { Gson gson = new Gson(); List<Employee> employees = employeeService.findEmployeesByQuery(query); // Here is where the problem is occurring - the gson.toJSON() method is (I imagine) // using my getters to format the JSON output, which is triggering hibernate to // try and lazily load my data... return gson.toJSON(employees); }
是否可以将JPA /hibernate设置为不尝试并延迟加载数据?
更新: 我意识到您可以使用FetchType.EAGER-但是如果我不想急于加载该数据怎么办?我只想停止尝试获取更多数据的hibernate状态- 我已经有了所需的数据。现在,每当我尝试访问get()方法时,hibernate都会抛出“没有会话或会话已关闭”错误,这是有道理的,因为我的事务已经从我的服务中提交了。
谢谢!
您确实有两个选择:
toJSON
我个人认为,如果您的库仅使用反射,则#1会更容易。