2014-02-25 53 views
0
CREATE TABLE EMPLOYEE (
EMP_ID INTEGER(5) PRIMARY KEY DEFAULT 1, 
EMP_NAME VARCHAR(30) NOT NULL 

); 

CREATE TABLE PHONENUMBER (
PH_NUMBER VARCHAR(10) NOT NULL, 
PH_NUMBER_TYPE VARCHAR(10), 
EMP_ID INTEGER(5) NOT NULL, 
FOREIGN KEY (EMP_ID) REFERENCES EMPLOYEE (EMP_ID) 
); 

加入限制我有兩個類僱員作爲實體類休眠標準:上收集

public class Employee{ 
    private int empId; 
    private String empName; 
    private Set<PhoneNumber>phNoSet; 
} 

和PhoneNumber作爲值類

public class PhoneNumber{ 
    private String phoneNo; 
    private String phNoType; 
} 

下面是僱員和PhoneNumber休眠之間XML映射。

​​

使用Hibernate,當我訪問僱員與EMP_ID =「101'.I得到PHONENUMBER table.But我需要PHONENUMBER只表項中的所有條目,其中ph_number_type =」住宅」與EMP_ID員工=‘101’ 。

我試過下面的方法,但沒有成功。

List results = session.createCriteria(Employee.class) 
       .add(Restrictions.eq("empId", 101)) 
       .createCriteria("phNoSet") 
       .add(Restrictions.eq("phNoType", "residential")) 
       .list(); 

我該如何實現它?

回答

0

這可以足夠了:

List results = session.createCriteria(Employee.class) 
       .add(Restrictions.eq("empId", 101)) 
       .add(Restrictions.eq("phNoSet.phNoType", "residential")) 
       .list(); 

List results = session.createCriteria(Employee.class) 
       .add(Restrictions.eq("empId", 101)) 
       .createAlias("phNoSet", "p") 
       .add(Restrictions.eq("p.phNoType", "residential")) 
       .list();