【发布时间】:2013-02-05 05:58:35
【问题描述】:
我尝试以最少的请求将完整数据库的内容转储到文件中。
因此,如何使用 query.scroll 启用 子查询获取 ?
我的对象:
我有类似的数据库:
Employee (1) ------ (0..n) Address
员工类:
...
@OneToMany(mappedBy = "employee", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@Fetch(FetchMode.SUBSELECT)
public Set<Address> getAddresses() { ... }
地址类:
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "employee_id", nullable = false)
public Employee getEmployee() { ... }
Java 代码:
session.createQuery("FROM Employee").scroll(ScrollMode.FORWARD_ONLY);
预期:
当我使用 query.find 方法时,我得到:
select * from employee
select * from address where employee_id in (select employee_id from employee)
但在满数据库时出现 OutOfMemoryError。
当我使用 session.scroll 时,它使用批量获取:
select * from employee
-- and n times :
select * from address where employee_id = ? or employee_id = ? ...
因此,我怎样才能使用 query.scroll
进行“query.find* 的查询”谢谢
【问题讨论】:
标签: java hibernate jpa fetching-strategy