如何将sql转换为hibernate条件查询

如何将sql转换为hibernate条件查询,hibernate,criteria,Hibernate,Criteria,如何将此伪查询转换为hibernate条件查询 给定itemID=123,item表有一个对category表(catgeoryId)的外键引用,我想将category coresp返回给id为123的项 从项目中选择cats.category作为项目 内部连接类别为cats 其中item.id=itemID为什么要执行一个标准?如果您知道id,您可以加载您的项目并检查其类别字段 Hibernate的目标是使OOP程序员的数据库编程更简单,而不是更复杂。标准并不是最适合这种特殊需要的。根据我的经

如何将此伪查询转换为hibernate条件查询

给定itemID=123,item表有一个对category表(catgeoryId)的外键引用,我想将category coresp返回给id为123的项

从项目中选择cats.category作为项目 内部连接类别为cats
其中item.id=itemID

为什么要执行一个标准?如果您知道id,您可以加载您的项目并检查其类别字段


Hibernate的目标是使OOP程序员的数据库编程更简单,而不是更复杂。

标准并不是最适合这种特殊需要的。根据我的经验,在构建动态查询时,条件最有用

如果我正确理解了您的域,那么这可以用HQL简单地表达:

select item.category from Item item where item.id = :itemId

说得好。我需要类别对象而不是项,因为我需要提取它的一些属性。写一个返回category对象而不是item对象的查询不是更好吗?当我不需要实际的项目时,我不需要检查类别,我也不需要担心Hibernate生成1+1选择的情况。在保持代码的清晰性和避免1+n选择之间,您在应用程序中有很多事情要做。这完全取决于基本实体的复杂程度。如果用户需要的只是类别,那么没有理由获取基本实体。从长远来看,让Hibernate只提供您真正需要的东西通常是最安全的。尽管如此,我同意标准并不是解决这一具体问题的最佳办法。