当前位置: 首页 > 面试题库 >

Hibernate-createCriteria或createAlias?

上官凯泽
2023-03-14
问题内容

如果我要搜索参加“数学”课程且“约翰”是他的小组的学生:

应该使用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"));

如何将subquery1和subquery2与初始条件放在一起?

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?我认为船boat是一样的…


问题答案:

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

大概它们在较旧的版本中有所不同,但是任何差异都已久远。

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

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


 类似资料:
  • 问题内容: 不推荐使用此调用: 在源文件中,我可以看到: 但是我不明白我必须使用哪种方法代替。 问题答案: 您可以在Hibernate 5.2 +中使用以下接口:

  • 问题内容: 谁能告诉我Hibernate的区别: 谁能告诉我这三个函数返回什么数据,cq指导我找到一个适当而简单的链接来研究这些Hibernate函数? 问题答案: 为了在Hibernate ORM框架中创建查询,有三种不同的类型。以下是创建查询实例的三种方法: 详细研究每个类别的详细信息。 方法createQuery()使用HQL语法创建Query对象。例如: 方法createSQLQuery(

  • 问题内容: 不推荐使用此调用: 在源文件中,我可以看到以下内容: 但是我不明白我必须使用哪种方法代替。 问题答案: 您可以在Hibernate 5.2 +中使用以下接口:

  • 我有一个grails web应用程序的列表函数。此列表将根据某些搜索条件填充表。Im使用hibernate createCriteria来尝试实现这一点。 在这种情况下,他们可以通过两个不同的关键特征进行搜索。用户名和用户号。 谢谢

  • 我正在尝试创建一个公司的名单,出现在任何两个其他名单。我可以创建一个列表中的公司出现在另一个列表中,如下所示:- 但我不知道如何在其他两个名单中寻找公司。我试过这个:- 有什么线索我应该如何构造这个吗?

  • 问题内容: 关于将由完整的Java EE应用程序服务器(例如GlassFish)提供服务的Java EE Web应用程序,这是最佳的 ORM 解决方案吗? EJB 3 或 Hibernate 3 为什么? 问题答案: 这两个完全不同。 是一个组件模型,与ORM直接无关。它确实有助于轻松管理事务,并使您可以轻松地从JPA访问实体管理器,JPA是Java EE中的标准化ORM解决方案。 (3)确实是一