jpa一对多查询的条件设置问题
假设有两个表,employee表和address表。雇员可以没有地址,也可以有多个地址,如下
地址表以empId为外键,对应雇员表的id。
雇员王五有3个地址,张三、李四均没有地址记录。
雇员表:
id--+--name--+
1 | 张三 |
2 | 李四 |
3 | 王五 |
----+--------+
地址表:
id-+--empId--+--address--+--status--+
1 | 3 | beijing | 0 |
2 | 3 | tianjin | 0 |
3 | 3 | chengde | 1 |
---+---------+-----------+----------+
希望查出的结果是
empId-+--empName--+--address--+--status--+
1 | 张三 | | |
2 | 李四 | | |
3 | 王五 | beijing | 0 |
3 | 王五 | tianjin | 0 |
------+-----------+-----------+----------+
雇员的实体类如下:
@Entity
@Table(name = "employee")
public class Employee {
private int id;
private String name;
private Set<Address> address = new HashSet();
@OneToMany(targetEntity=Address.class,mappedBy="empId",cascade=CascadeType.ALL)
public Set getAddress() {
return address;
}
public void setAddress(Set address) {
this.address = address;
}
查询类如下:
StringBuffer hsql1 = new StringBuffer("from Employee emp" );
List rstList = employeeDao.findList(hsql1.toString());
这样能够查出
empId-+--empName--+--address--+--status--+
1 | 张三 | | |
2 | 李四 | | |
3 | 王五 | beijing | 0 |
3 | 王五 | tianjin | 0 |
3 | 王五 | chengde | 1 |
------+-----------+-----------+----------+
请问怎样设置条件,能够过滤掉address.status为1的记录呢?
请高手不吝赐教哈,谢谢!