带有投影和限制的休眠条件查询问题

Posted

技术标签:

【中文标题】带有投影和限制的休眠条件查询问题【英文标题】:Hibernate Criteria Query Issue with Projection and restriction 【发布时间】:2018-08-04 23:06:30 【问题描述】:

我正在尝试使用休眠条件查询从表中获取选定的列

Criteria cr = session.createCriteria(OfferCashbackMaster.class)
    .setProjection(Projections.projectionList()
      .add(Projections.property("txnType"), "txnType")
      .add(Projections.property("off_Discription"), "off_Discription"))
    .setResultTransformer(Transformers.aliasToBean(OfferCashbackMaster.class))
    .add(Restrictions.and(Restrictions.eq("aggregatorId", aggregatorId),
                           Restrictions.eq("txnType", txnType)));

投影中提到的名称txnType与限制冲突。

给我以下错误

Hibernate: 
select 
    this_.OFFER_CODE as y0_, 
    this_.TXN_TYPE as y1_, 
    this_.VALID_TO as y2_, 
    this_.OFFER_DISCRIPTION as y3_ 
    from OFFER_CASHBACK_MASTER this_ 
where 
    (this_.AGGREGATOR_ID=? and y1_=?)

2018-02-25/15:42:41.756  WARN: util.JDBCExceptionReporter - 
SQL Error: 1054, SQLState: 42S22
2018-02-25/15:42:41.757 ERROR: util.JDBCExceptionReporter - 
Unknown column 'y1_' in 'where clause'

我们如何解决这个问题?

【问题讨论】:

如果适用,请添加您的 OfferCashbackMaster 类及其 xml 映射。还要添加你的休眠配置 xml / java 类 【参考方案1】:

如果您使用的是 Hibernate 3.2.6, 3.0.5, 3.5.5, 3.6.0.Beta3,那么是时候迁移到更新版本的 Hibernate。

报告的错误:投影和限制条件查询问题

链接:https://hibernate.atlassian.net/browse/HHH-3371

影响版本:3.2.6 3.0.5, 3.5.5, 3.6.0.Beta3

组件/s:查询条件

修复版本:3.6.0.Beta4 及以上。

【讨论】:

【参考方案2】:

我相信你使用的是过时的休眠版本。

这个问题已经解决了很长时间了:

https://hibernate.atlassian.net/browse/HHH-817

固定版本:3.6.0.Beta4

【讨论】:

以上是关于带有投影和限制的休眠条件查询问题的主要内容,如果未能解决你的问题,请参考以下文章

一对多和一对多连续映射的休眠条件查询 - 表或视图不存在

休眠条件查询到 JPA 条件查询

使用 Group By 和 aliasToBean 的休眠条件查询

休眠查询语言或使用条件?

将 TIMESTAMPDIFF 与 JPA 条件查询和休眠作为提供者一起使用

如何使用休眠条件运行函数?