您的位置:首页 > 产品设计 > UI/UE

Hibernate hiberante query language(一对多的操作)

2016-09-24 22:23 441 查看

等值连接

SELECT  c.*,s.*  FROM Classes c,Student s WHERE c.cid=s.cid


内连接

SELECT  c.*,s.*  FROM  Classes c INNER JOIN Student s ON (c.cid = s.cid)


左外连接

SELECT  c.*,s.* FROM Classes c  LEFT OUTER JOIN Student s ON c.cid = s.cid


public class OneToMoreTest  extends HibernateUtil{
/**
#等值连接
SELECT  c.*,s.*  FROM Classes c,Student s WHERE c.cid=s.cid
*/
@Test
public void testEQ(){
Session session=sessionFactory.openSession();
Query query=session.createQuery("from com.sanmao.utils.Classes c" +
",com.sanmao.utils.Student s where c.cid=s.cleass.cid");
List list=query.list();
//     返回的是一个Object数组,元素包括Object(Classes Student)
session.close();
}
/**
#内连接
SELECT  c.*,s.*  FROM  Classes c INNER JOIN Student s ON (c.cid = s.cid)
*/
@Test
public void testIN(){
Session session=sessionFactory.openSession();
Query query=session.createQuery("from com.sanmao.utils.Classes c inner join c.students s");
List list=query.list();
//     返回的是一个Object数组,元素包括Object(Classes Student)
//     和等值效果相同
session.close();
}
/**
左外连接
SELECT  c.*,s.* FROM Classes c  LEFT OUTER JOIN Student s ON c.cid = s.cid
*/
@Test
public void testLO(){
Session session=sessionFactory.openSession();
Query query=session.createQuery("from com.sanmao" +
".utils.Classes c left outer join c.students s");
List list=query.list();
//     返回的是一个Object数组,元素包括Object(Classes Student)
//     和等值效果相同
session.close();
}

/**
* 迫切内连接
* */
@Test
public void testInner_Fetch(){
Session session=sessionFactory.openSession();
Query query=session.createQuery("from com.sanmao" +
".utils.Classes c inner join fetch c.students s");
List<Classes> list=query.list();
//返回所有拥有学生的班级
for (Classes classes: list
) {
System.out.println(classes);
}
session.close();
}
/**
* 迫切外连接
* */
@Test
public void testOuter_Fetch(){
Session session=sessionFactory.openSession();
Query query=session.createQuery("from com.sanmao" +
".utils.Classes c left  outer join fetch c.students s");
//返回所有班级,包括有学生和没有学生的班级
List<Classes> list=query.list();
for (Classes classes: list
) {
System.out.println(classes);
}
session.close();
}

/**
* 两个字段来自不同的表的查询
* 值得注意的是  当用new 的时候会和 fetch (迫切连接)造成冲突
* */
@Test
public void testClassesView(){
Session session=sessionFactory.openSession();
StringBuffer stringBuffer=new StringBuffer();
stringBuffer.append("select new com.sanmao.utils.ClassesView(c.name,s.name)");
stringBuffer.append("from Classes c inner join c.students s");
List<ClassesView> list=session.createQuery(stringBuffer.toString()).list();
for (ClassesView cv: list
) {
System.out.println(cv);
}
session.close();
}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hibernate c语言 select