Hibernate 休眠条件:添加对集合的限制
我有两个类作为实体类Hibernate 休眠条件:添加对集合的限制,hibernate,Hibernate,我有两个类作为实体类 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) REF
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)
);
下面是hibernate中Employee和PhoneNumber之间的xml映射
public class PhoneNumber{
private String phoneNo;
private String phNoType;
}
我如何才能实现它?这就足够了:
List results = session.createCriteria(Employee.class)
.add( Restrictions.eq("empId", 101) )
.createCriteria("phNoSet")
.add( Restrictions.eq("phNoType", "residential") )
.list();
或
<hibernate-mapping>
<class name="Employee" table="EMPLOYEE">
<meta attribute="class-description">
This class contains the portal detail.
</meta>
<id name="empi\Id" type="string">
<column name="emp_id" sql-type="char(32)"/>
<generator class="uuid"/>
</id>
<property name="empName" column="emp_name" type="string" not-null="true"/>
<set name="phNoSet" table="PHONENUMBER">
<key column="empId"/>
<composite-element class="PortalL10n">
<property name="phoneNo" column="ph_number" type="string" not-null="true"/>
<property name="phNoType" column="ph_nmber_type" type="string" not-null="true" />
</composite-element>
</set>
</class>
</hibernate-mapping>
List results = session.createCriteria(Employee.class)
.add( Restrictions.eq("empId", 101) )
.createCriteria("phNoSet")
.add( Restrictions.eq("phNoType", "residential") )
.list();
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();