`
亚当爱上java
  • 浏览: 696904 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

HQL检索方式: right-hand operand of a binary operator was null

阅读更多
Hibernate Query Language
依赖接口:Query
数据模型:
tb_user(userId,userName)
tb_addr(addrId,addrName,userId)
Entity:
class Addr{
        private int addrId;
        private String addrName;
}
class User{
        private int userId;
        private String userName;
        private Set addrs = new HashSet();
}
备注:省略geters 和 seters
用 ? 版本
String hSQL = "from User as u where u.userId=?";  //一般都取一个别名 as u
Query q = session.createQuery(hSQL);            
q.setInt(0,1);                                    //第一各参数为 '?' 的位置,从 0 开始,第二个参数为 ? 的值;
List users = q.list();
执行为:select * from tb_user where userId = 1;
用 :Field 版本
String hSQL = "from User as u where u.userId=:userId";  //一般都取一个别名 as u
Query q = session.createQuery(hSQL);            
q.setInt("userId",1);                                
List users = q.list();    //注意:String hql = "from User u where u.id=? and u.name=:name";hibernate不报错,String hql = "from User u where  u.name=:name
        and  u.id=?";hibernate会报
严重:  cannot define positional parameter after any named parameters have been defined
2009-4-16 15:00:33 org.hibernate.hql.ast.ErrorCounter reportError
严重:  right-hand operand of a binary operator was null


hSQL语句例子:
以下都假以调用 q.list();即返回list
from:
form User as u -> select * from tb_user  //返回的list里存放的是User
select:
select u.userName from User as u where u.userId=? and u.userName like 'ab%' 返回的list里存放的是User
select new List(u.userId,u.userName) from User as u   //返回的list里存的是 list(此list存放的对应的是userId,userName)
select new com.pannuo.entity.Test(u.userId,u.userName) from User as u  //返回的list里存的是Test
Test说明:
class Test{
        private int userId;
        private String userName; //必须有两个对应属性
        public Test(int id,String name){    //必须有个对应构造方法
                this.userId = id;
                this.userName = name;
        }
}// 省略geters 和 seters
select u.userName as name from User u //对属性名别名
select new map(u.userName as name) from User u //返回的list里存放的是map(以userName为key 实际选出的值为value)

聚集函数:(5种)
以下调用Object o = q.uniqueResult()
avg    :计算属性平均值    ->select avg(u.userId) from User u  //返回Double 包装类                        
count   :统计选择对象个数 ->select count(*) from User         //返回Integer 或其他的
max     :属性值最大值     ->select max(u.userId) from User u  //返回Integer 或其他的
min     :属性值最小值     ->select min(u.userId) from User u  //返回Integer 或其他的
sum     :属性值总和       ->select sum(u.userId) from User u  //返回Integer 或其他的                                        
order by
from User u order by u.userName asc,u.userId desc  //默认升序asc

group by
select a.userId,sum(a.userAge),count(a) from User u group by u.groupId

子查询
from User as u where u.age>(select avg(b.age) from UserTmp as b)
from User as u where not(u.userName,u.age) in(select b.userName,b.age from UserTmp as b)

分页
//从第100条开始,检索20条数据
Query.setFirstResult(100);
Query.setMaxResult(20);

SQL查询
SQLQuery q = (SQLQuery) session.createSQLQuery("select * from tb_user where userId=?"); //String 就为SQL语句
q.setInt(0,1);
List list = q.list();

其他
distinct //不重复
select distinct u.userName form User as u;

内联
多对一(Addr中有一个User即:多个Addr有一个User)
以前可以用级联操作来检索Addr是同时检索User
现在用内联:
from Addr ad a inner join fetch a.user as u where c.addrId=?  //内联,同时拿Addr中的User

HQL的更新
update User u set u.userName=? where u.userId=?

例句:
select new List(d.goods,count(*)) from OrderDetail as d group by d.goods.goodsId order by count(*) desc
分享到:
评论

相关推荐

    Hibernate数据检索(HQL)笔记

    Hibernate数据检索(HQL)笔记Hibernate数据检索(HQL)笔记Hibernate数据检索(HQL)笔记Hibernate数据检索(HQL)笔记

    JSP开发中hibernate框架的常用检索方式总结

    总结hibernate框架的常用检索方式 1、hibernate框架的检索方式有以下几种: OID检索:根据唯一标识OID检索数据 对象导航检索:根据某个对象导航查询与该对象关联的对象数据 HQL检索:通过query接口对象查询 QBC...

    hive 参数设置

    命令行模式,或者说目录模式,可以使用hive 执行命令。 选项说明:  -e : 执行短命令  -f : 执行文件(适合脚本封装)  -S : 安静模式,不显示MR的运行过程 ...hive -S -f test.hql hive -hive

    hibernate查询语句--HQL

    hibernate查询语句--HQL hibernate查询语句--HQL

    Hibernate HQL增删改查-附件资源

    Hibernate HQL增删改查-附件资源

    Hibernate数据检索(HQL)笔记

    魔乐科技,李兴华老师的Hibernate教程笔记,对Hibernate的基础知识进行了比较详细的讲解,对初学者有一个比较笼统的介绍,是带我们入门Hibernate的不二选择。

    hql-tag:Hasura实用程序库,它是graphql-tag的包装。 该库有助于为Hasura GraphQL后端编写简洁的查询

    hql-tag通过提供简写where和order_by参数的方式来解决此问题。 -链接到codeandbox以比较并使用graphql-tag和hql-tag 注意:该库可与所有与graphql-tag一起使用的GraphQL Client框架配合使用。 安装 安装依赖项。 ...

    HQL-Builder:Hibernate用工具集

    这个项目是做什么的 是为了让hibernate更好用,减少直接写hql的情景

    PKLormapping:Object-c和Swift版本SQLite ORM框架

    ⌀目前不支持join连接方式自动补全 1.1版本 修复: ➤属性空值SQL映射失败BUG ➤修复使用过程中数据内存占用问题 新增: ➤新增多表联动查询功能 ➤新增事务处理机制 ➤新增批量处理API,实测万级数据插入快3倍以上 ...

    经典hibernate教程-HQL语句

    HQL的全称是? 和SQL相比,HQL有哪些特点? HQL语句为:select jd.jdid,jd.jd from TblJd jd。怎样获得并显示查询结果? 使用'?'做占位符的参数查询,怎样设置参数的值? 命名参数查询的语法是? 怎样创建Criteria...

    java 经典面试题 于网络分享

    5. Java语言中,方法的重写...8.以下哪些不是Hibernate的检索方式: A、导航对象图检索 B、OID检索 C、ORM检索 D、QBC检索 E、本地SQL检索 F、HQL检索 答案:C 9.以下代码定义了一个变量,如何输出这个变量的值?

    HQL语法入门学习HQL语法入门学习

    HQL语法入门学习HQL语法入门学习HQL语法入门学习HQL语法入门学习HQL语法入门学习HQL语法入门学习HQL语法入门学习HQL语法入门学习HQL语法入门学习HQL语法入门学习HQL语法入门学习HQL语法入门学习HQL语法入门学习HQL...

    HQL:Hibernate Qusery Language

    HQL :是面向对象的查询语言,同SQL有些相似是Hib中最常用的方式。 查询设定各种查询条件。 支持投影查询,检索出对象的部分属性。 支持分页查询,允许使用having和group by 提供内制的聚集函数,sum(),min(),max...

    HQL语句 HQL语句

    HQL语句 HQL语句 HQL语句 HQL语句 HQL语句

    HQL 详解 HQL查询

    Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Lanaguage)查询提供了更加丰富的和灵活的查询特性,因此Hibernate将HQL查询方式立为官方推荐的标准查询方式,HQL查询...

    Hadoop-2.8.0-HA-Hive安装部署与HQL12.hive的基本语法--数据导入--从本地--从hdfs.mp4

    Hadoop-2.8.0-HA-Hive安装部署与HQL12.hive的基本语法--数据导入--从本地--从hdfs.mp4

    hql语句大全hql语句大全

    hql语句大全hql语句大全hql语句大全hql语句大全hql语句大全hql语句大全hql语句大全hql语句大全hql语句大全hql语句大全hql语句大全hql语句大全hql语句大全hql语句大全hql语句大全hql语句大全hql语句大全

    HQL语句大全HQL语句大全

    HQL语句大全HQL语句大全HQL语句大全HQL语句大全HQL语句大全

    hibernate-HQL语句大全

    hibernate-HQL语句大全

Global site tag (gtag.js) - Google Analytics