gpt4 book ai didi

hibernate 标准。限制和最大日期

转载 作者:行者123 更新时间:2023-12-02 07:37:03 31 4
gpt4 key购买 nike

我对在 Hibernate 中使用限制有疑问。

我必须创建条件,设置一些限制,然后选择日期字段最大值的记录:

Criteria query = session.createCriteria(Storage.class)
query.add(Restrictions.eq(USER_ID, item.getUserId()));
query.add(Restrictions.eq(ITEM_ID, item.getItemId()));
query.add(Restrictions.lt(PURCHASE_DATE, item.getDate()));
query.setProjection(Projections.max(PURCHASE_DATE));
return query.uniqueResult();

我了解 Projections 不会向我返回包含最大日期的记录。我应该选择什么方法?

也许我可以为我的查​​询添加顺序(日期字段上的升序)然后选择第一个结果?

或者您能否提出更优雅的解决方案?

谢谢!

最佳答案

在你的情况下你可以去

A) 使用 DetachedQuery。例如,

DetachedCriteria maxQuery = DetachedCriteria.forClass( Storage.class );
maxQuery.add(Restrictions.eq(USER_ID, item.getUserId()));
maxQuery.add(Restrictions.eq(ITEM_ID, item.getItemId()));
maxQuery.add(Restrictions.lt(PURCHASE_DATE, item.getDate()));
maxQuery.setProjection( Projections.max( "PURCHASE_DATE" ) );

Criteria query = getSession().createCriteria( Storage.class );
query.add(Restrictions.eq(USER_ID, item.getUserId()));
query.add(Restrictions.eq(ITEM_ID, item.getItemId()));
query.add( Property.forName( "PURCHASE_DATE" ).eq( maxQuery ) );

在处理分离查询时,请牢记事务!

有关分离查询的更多详细信息,请参阅文档的第 15 章:http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/querycriteria.html

B) 直接使用 HQL 或 SQL,以进行子选择。

有关 HQL 的更多详细信息,请参阅 Hibernate 文档的第 14 章:http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html

关于 hibernate 标准。限制和最大日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15166474/

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