我遇到问题,JPA试图在我不想要的时候懒洋洋地加载我的数据。基本上发生了什么是我正在使用服务来检索一些数据,当我将这些数据解析为JSON时,JSON库正在触发休眠以尝试并延迟加载数据。有什么办法可以阻止它吗?下面给出了一个例子。JPA2 /休眠 - 停止延迟加载?
// 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 /休眠不尝试并延迟加载数据?
更新:我意识到你可以使用FetchType.EAGER - 但如果我不想急于加载该数据呢?我只是想停止尝试检索更多数据的休眠 - 我已经有了我想要的数据。现在,无论何时尝试访问get()方法,hibernate都会抛出“无会话或会话已关闭”的错误,这很有意义,因为我的事务已经从我的服务提交。
谢谢!
你能否告诉你更多关于你的问题:你是否想从懒惰加载完全切换到急切加载,或者你是否不想在这种特定情况下延迟加载员工以及为什么。 – gabuzo 2011-01-26 15:03:14
我的问题是我不想懒惰地加载数据。当然,我可以将其标记为EAGER加载 - 但如果我现在不关心这些数据会怎么样?例如,如果我有一个拥有多个职位的员工,但我不想要这些数据,因为它对于我想呈现的视图来说太详细了,那么如何告诉JPA不要尝试并获取该数据? – 2011-01-26 15:34:43
试试这个: http://stackoverflow.com/questions/4802887/gson-how-to-exclude-specific-fields-from-serialization-without-annotations – 2012-08-24 23:44:28