我尝试以最少的请求转储到文件完整数据库的内容。
因此,如何使用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* 的查询”
谢谢