java - Hibernate HQL查询时 条件字段没有被反射成数据库表字段
PHP中文网
PHP中文网 2017-04-17 15:26:19
[Java讨论组]

业务场景非常简单:
采用hibernate hql查询数据库。

ps:为了隐私起见,关键类,表明用xxx代替,还请见谅
下面是dao层方法:


            String queryString="from XXXX  where bizSN=:bizsn";
            Query query=this.getSession().createQuery(queryString);
            query.setParameter("bizsn", audit.getBizSn());
           
            List list=query.list();

在执行查询时报错:

Hibernate: select caauditaut0_.id as id1_0_, caauditaut0_.biz_sn as biz2_0_, caauditaut0_.call_back_time as call3_0_, caauditaut0_.create_time as create4_0_, caauditaut0_.photo_negative as photo5_0_, caauditaut0_.photo_postive as photo6_0_, caauditaut0_.push_notifaction as push7_0_, caauditaut0_.result_code as result8_0_, caauditaut0_.result_info as result9_0_, caauditaut0_.status as status10_0_, caauditaut0_.time_consumer as time11_0_ from xxxxx  caauditaut0_ where bizSN=?
2015-10-25 23:20:53 [org.hibernate.engine.jdbc.spi.SqlExceptionHelper]-[WARN] SQL Error: 1054, SQLState: 42S22
2015-10-25 23:20:53 [org.hibernate.engine.jdbc.spi.SqlExceptionHelper]-[ERROR] Unknown column 'bizSN' in 'where clause'
2015-10-25 23:20:53 [org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl]-[INFO] HHH000106: Forcing container resource cleanup on transaction completion

从错误信息可以清除的看见,条件字段bizSN在被转换成sql语句的时候,仍然是bizSN并没有被映射成数据库的字段(biz_sn),但是表明和其他返回字段又被成功转换了。

下面是bo

   private String bizSN; // 流水号

    @Column(name = "biz_sn")
    public String getBizSn() {
        return bizSN;
    }
    
    public void setBizSn(String bizSN) {
        this.bizSN = bizSN;
    }

下面是表:

下面是我的一些想法:

1.之前以为是注解的表字段写错了,然后检查了一遍发现并没有问题,且之前执行保存操作的时候,是成功入库的,所以这里可以排除注解的错误
2.我这边将查询条件部分写成数据库字段,如:from XXXX  where biz_sn=:bizsn,是ok的,感觉有些混乱。 hql查询,出现了,hql的语法和sql的语法混合。
3.是所有的字段作为查询条件都是这种情况,我在想是不是配置出了什么问题。或者hibernate有什么配置可以屏蔽在查询的时候不将查询条件转换成数据库字段而是采用hql查询语句中的原字符串。

还请有相关经验的大神赐教,如果觉得问的有些小白还请见谅

PHP中文网
PHP中文网

认证0级讲师

全部回复(1)
大家讲道理

问题已经解决,是bo的属性名命名不规范,必须要严格按照hql的规则来,首字母小写,其他单词首字母大写,表中字段有下划线的,视为第二个单词如:bizSn,因为hql是根据get方法来获取的。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号