我想使用Hibernate的 Criteria
API
,选择表中具有给定列最大值的记录。
我试图用投影,创造一个别名为max(colunName)
,然后使用它restrictions.eq()
,但它不断告诉我“
无效号码 ”。
用Hibernate做到这一点的正确方法是什么?
您可以使用DetachedCriteria
来表示子查询,如下所示:
DetachedCriteria maxId = DetachedCriteria.forClass(Foo.class)
.setProjection( Projections.max("id") );
session.createCriteria(Foo.class)
.add( Property.forName("id").eq(maxId) )
.list();
问题内容: 如何将sql查询写入休眠条件? 问题答案: 认为我找到了答案。您必须使用Projection.sqlProjection()而不是Projections.sum()。例:
问题内容: 我在代码中使用了条件查询。它总是会开火 相反,我想忽略查询中的一列(字段),因为该字段以字节为单位存储大量数据。这会导致性能问题。 有人可以对此提出想法吗? 一些更新 我在查询中添加了一个投影,它创建了一个查询,例如… 现在的问题就像.. 和y8_的相同错误,y5_表示所有接近它给出错误的地方。 我将其修改为Query … 而且有效。但是我不知道如何在HQL中对其进行修改? 问题答案:
问题内容: 我有一个包含11列的表,但是我需要在我的应用程序中仅获得2列,我使用的是spring / hibernate / DAO组合。现在,我有一个包含所有11个字段的域类,以及一个映射表中所有11列的映射文件。如何使用仅获得其中的2个? 问题答案: 要么: 使用投影-专业:无添加-缺点:不是类型安全的(结果是一行的行,每行都是: 在SELECT子句中使用构造函数表达式(不需要将指定的类作为实
问题内容: 我见过Restrictions.ilike(’property’,’%value%’),但想生成类似SQL:lower(property)=’value’。有任何想法吗? 我用了: 因为不推荐使用Expression。SimpleExpression将在值上调用toLowerCase(),因此没有必要事先进行此操作。 请参阅: SimpleExpression源 问题答案: 请小心使用
问题内容: 我有一个使用hibernate条件创建的查询,如下所示: 我希望排序不区分大小写,等同于HQL查询 如何使用hibernate条件实现此目的? 问题答案:
问题内容: 我正在尝试运行一个更新查询,它将在sql中看起来像这样: 我正在尝试使用 Criteria 这样重新创建查询: 这行不通,因为满足该条件的行很多,我的独特结果是我猜这里的问题。如何将其转换为符合条件的所有行的更新。我不想使用HQL查询,而是使用Criteria来执行。 问题答案: 始终建议执行批量操作非常接近数据库,除非需要,否则我们不需要在会话中保留更新的对象,因此,在执行批量操作时