gpt4 book ai didi

nhibernate - hibernate - createCriteria 还是 createAlias?

转载 作者:行者123 更新时间:2023-12-02 20:50:31 24 4
gpt4 key购买 nike

如果我想搜索那些上“Math”课的学生,“John”是他的组:

我应该使用createCriteria还是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"));

如何将子查询1和子查询2与初始条件放在一起?

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"));

何时使用 createCriteria 以及何时使用 createAlias?我认为船是一样的......

最佳答案

CreateAlias 和 CreateCriteria 在当前版本的 Hibernate 和 NHibernate 中相同。唯一的区别是 CreateCriteria 有 2 个额外的重载,没有别名参数。

想必它们在旧版本中有所不同,但任何差异早已不复存在。

别名可以根据另一个别名来定义,因此您的第一个示例可以写为:

// 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<Student>()
.CreateAlias("Courses", "course")
.CreateAlias("course.Group", "student")
.Add(Restrictions.Eq("course.Name", "Math"))
.Add(Restrictions.Eq("student.Name", "John"));

关于nhibernate - hibernate - createCriteria 还是 createAlias?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2347359/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com