java createcriteria,hibernate - createCriteria或createAlias?

If I want to search those students who take class "Math" and "John" is his group:

shoud I use createCriteria or createAlias?

Criteria:

Criteria criteria = session.createCriteria(Student.class);

Criteria subquery1 = criteria.createCriteria("courses", course).add(Restrictions.eq(course.name, "Math"));

Criteria subquery2 = criteria.createCriteria("group", student).add(Restrictions.eq(student.name, "John"));

how to put subquery1 and subquery2 together with initial criteria?

Alias:

Criteria criteria = session.createCriteria(Student.class).

createAlias("courses", course).add(Restrictions.eq(course.name, "Math")).

createCriteria("group", student).add(Restrictions.eq(student.name, "John"));

When to use createCriteria and when createAlias? I think the boath are the same...

解决方案

CreateAlias and CreateCriteria are identical in the current versions of Hibernate and NHibernate. The only difference being that CreateCriteria has 2 additional overloads without the alias parameter.

Presumably they were different in a older version, but any differences are long gone.

An alias can be defined in terms of another alias, so your first example can be written as:

// Java

Criteria criteria = session.createCriteria(Student.class)

.createAlias("courses", "course")

.createAlias("course.group", "student")

.add(Restrictions.eq("course.name", "Math"))

.add(Restrictions.eq("student.name", "John"));

// C#

ICriteria criteria = session.CreateCriteria()

.CreateAlias("Courses", "course")

.CreateAlias("course.Group", "student")

.Add(Restrictions.Eq("course.Name", "Math"))

.Add(Restrictions.Eq("student.Name", "John"));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值