两个类,多对多,比如课程,学生,一门课程可以有很多学生参加,一个学生可以参加很多门课程。
如果是多对一,或者他的属性条件,那我们可以通过类似下面代码查询
[code="java"] Criteria criteria = getHibernateTemplate().getSessionFactory().getCurrentSession().createCriteria(clz);
criteria.add(Restrictions.eq(fieldColumn, value);[/code]
那请问下,如果要在有学生Y参加的课程,如果用criteria,该怎么做呢?谢谢。
如果是多对多的话。
假设Clazz 为课程。Student为学生。Clazz有个students属性,Student的id是id属性。
[code="java"]criteria.createAlias("students","s");
criteria.add(Restrictions.eq("s.id",y.getId()));[/code]
使用Criteria 基本上最好不要用对象做查询的参数,比较麻烦,这样写要求y是一个完整的student对象或者是有主键,而不是只有其中几个其他属性
[code="java"]
criteria.add(Restrictions.eq(student, y);
[/code]
最好使用hsql,很方便
[code="java"]
String hsql = "from Count as c left join c.students as s where s.name = y";
Query query = getHibernateTemplate().getSessionFactory().getCurrentSession().createQuery(hql);
query.list();
[/code]