HIBERNATE QBE 查询不能用主键来作example查询?

以下是我查询的代码
[code="java"]
// QBE 查询
Criteria criteria = session.createCriteria(PcInfoDO.class);
criteria.add(Example.create(pcInfoDO).enableLike(MatchMode.START));
// 如果不加下面这句话,主键serial将不会再查询条件里面出现。
criteria.add(Restrictions.like("serial", pcInfoDO.getSerial()));
// 获取记录总数
int rowCount = (Integer) criteria.setProjection(Projections.rowCount()).uniqueResult();

    // 清除获取总数的Projection
    criteria.setProjection(null);
    // 设置分页
    criteria.setFirstResult((currentPage - 1) * PAGE_SIZE);
    criteria.setMaxResults(PAGE_SIZE);
    // 查询
    List<PcInfoDO> result = criteria.list();

[/code]
觉得很是奇怪?是我没学深入还是hibernate的设计有点奇怪?

0

1个回答

QBE适合动态查询,如果用主键查询属于静态查询,得用HQL

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Hibernate的HQL、QBC、QBE查询总结
一、HQL查询HQL的应用最为广泛,是最为常用的,跟SQL语句差不多,区别是: SQL基于表和字段查询,HQL基于类对象和属性查询HQL的功能大概有: 属性查询、分组查询、动态实例查询(比较具备特点)、分页查询、条件查询、连接查询、子查询属性查询属性查询要注意的地方是,查询的结果会封装为一个Object数组 Session session = HibernateSessionFactory
Hibernate总的来说共有三种查询方式:HQL、QBC和QBE三种
[size=medium] [b]1.Hibernate总的来说共有三种查询方式:HQL、QBC和SQL三种,[/b] 一.在hql中关键字不区分大小写,但是属性和类名区分大小写 二.QBC(Query By Criteria) 查询方式 这种方式比较面向对象方式,重点是有三个描述条件的对象:Restrictions,Order,Projections。使用QBC查询,一般需要以下三...
Hibernate的findByExample莫名加入了值为空的的属性做查询条件
一直以来我都没有用过Hibernate的findByExample()方法,前几天有一个见得的搜索功能需要实现。于是我想着测试一下该方法(懒得写SQL)。了解一下机制。ZcDO zcDO = new ZcDO() zcDO.setZcmc("投影仪") zcDao.findByExample(zcDO)在终端输出结果:select ... from ... where (this_.NUM=? an
SpringDataJpa系列三之QBE(按照实例对象查询)
本文章参考文档为《SpringDataJpa从入门到精通》 我们看一下JpaRepository的UML类图 我们可以看到, 自JpaRepository开始, 就实现了一个名叫QueryByExampleExecutor的接口。 也就是从这开始, SpringData引入对QBE的支持。 什么是QBE? 全称 QueryByExample, 按照示例查询, 通过传入查询示例来生成查询的SQ...
getHibernateTemplate().get()方法只能按照主键来查询
getHibernateTemplate().get()方法只能按照主键来查询,如果需要按照数据表里的其他字段进行查询,可以实现HibernateCallBack接口,然后重写里面的方法,获得HibernateCallBack里面的doInHibernate方法的参数:Session,就可以使用Session的CreateQuery方法创建Query对象,然后就可以使用HQL语句进行任意的查询了...
我真是受够了没有外键关联的Hibernate多表查询!-- 反射 通过example查询列表
HIbernate 中,没有外键关联,Criteria 不能关联查询!所以就不能findByExample,通过一个条件对象来获取数据。 只能我们自己搞了! AbstractClass: /** * 设置查询条件 * @param t * @param whereHQL * @return */ private List s
Hibernate引用对象非主键属性的查询
如果对引用对象的id查询,则可以不用建立引用,很经典的语句如下: DetachedCriteria dc = DetachedCriteria.forClass(Student.class); dc.add(Restrictions.like("team.id", teamId, MatchMode.ANYWHERE)); 但如果是对引用对象的非主键查询,上述查询语句就会报错,必须用crea
hql查询表中无主键,返回结果全是一样的数据
用hql查询view,但view中无主键,根据某列查询,返回多条记录,返回的结果记录条数正确,但数据全部重复与db查询不一致,解决方案:在映射文件.hbm.xml中定义为联合主键,即用&amp;lt;composite-id&amp;gt; 测试数据如下: SPREAD_TABLE_CODE,PRICE_FROM,PRICE_TO,SPREAD_VAL 1 0.01 0.1 0.001 1 0.1 0....
Hibernate : 再调用get()方法 通过主键来查询一条记录时 报错
org.hibernate.TypeMismatchException: Provided id of the wrong type for class com.itheima.domain.Customer. Expected: class java.lang.Long, got class java.lang.Integer     at org.hibernate.event.interna...
hibernate 复合主键 关联查询
[code=&quot;java&quot;] [/code] 通常在使用联合主键,也意味着这些列也...
hibernate 自动建表 实体类继承父类 父类有主键 启动失败
项目中我们经常把实体类公共的属性抽取出来(主键ID,创建时间crateTime等),抽取成一个BasedModel,然后让有需要的实体类去继承。 package com.test.demo.model; import org.hibernate.annotations.GenericGenerator; import javax.persistence.Column; import jav...
QBE Example 的简单使用
Session session = sf.getCurrentSession(); //事务开始 session.beginTransaction(); Teacher example = new Teacher(); example.setName("kkkkk_"); example.setTitle(Title.C);
Hibernate的QBE查询方式
[b]以下是从帮助文档中复制过来的。 特别要注意版本属性、标识符和关联被忽略。 默认情况下值为null的属性将被排除。 如果你的持久类的属性有int等类型,则须给它赋值,因为默认情况下它的值不是null,而是0。 当然这里也可以自己去设置example,比如.excludeZeroes() .excludeProperty() 详见下文 当为一个criteria构建一个Exampl...
Hibernate数据操作(一)之按主键查询。
按主键查询(get()和load()) (1)get()查询案例 数据库信息: 实体类代码: package cn.jbit.pojo; import java.io.Serializable; public class User implements Serializable { private static final long serialVersionUID = 29...
Hibernate的list()方法出来的结果重复
按顺序排查错误: 一、将hql语句转换成sql语句在数据库中进行执行,查看结果。 若出来的结果是重复的,则说明hql语句有问题 若出来的结果不重复,则说明hql没有问题 二、是否存在list()出来的是不重复的,但你输出显示的时候,没有遍历正确,导致重复输出第一条数据 解决方法:自己写个简单的List集合,放值后测试即可 三、主键问题。(重点,初学者易犯的问题) 查询的表不是由一个字
Hibernate处理无主键的表的映射问题
Hibernate处理无主键的表的映射问题,其实很简单,就是把一条记录看成一个主键,即组合主键&amp;lt;composite-id&amp;gt;。   第一步:建表(略,无主键)。   第二部:进行配置文件的编写。       第三部:重写实体类中的OBJECT的equals方法和hashCode并且每个实体要实现java.io.Serializable接口。 ...
Hibernate 限制查询数目,解决Limit在hql不能使用问题
在hql语句中,不能使用limit来限制显示的条数FROM user_info order by createdTime desc limit 1显示的数目不是1条,而是你查询出来的条数,所以上述写法是错误的。如何解决limit在hql中不能使用,并设置查询出来集合的数目,我们应该使用setMaxResults(e)方法来解决。以下是使用hibernate查询并限制查询数目的案例:public L...
hibernate如何只根据主键更新实体
我现在做的项目中,打开hibernate的debug日志发现,当hibernate更新实体是调用save或merge方法,在hibernate解析成sql的时候,有些地方是where条件后面只有一个主键ID,但是有些地方where条件后面却列出了所有的属性,不知道什么原因?有知道的朋友,还请告知,谢谢!...
hibernate配置非主键关联
未查找到one-to-one的非主键配置,记录下many-to-one的非主键配置, 配置如下: &amp;lt;many-to-one name=&quot;profiteAccount&quot; class=&quot;com.chinarb.entity.ProfiteAccount&quot; property-ref=&quot;ownerId&quot; fetch=&quot;select&quot; insert=&quot;false&quot; update=&quot;fa
Hibernate QBE查询
这个查询的示例哪里有.请各位给我哥示例.最近公司要用hibernate了.极度郁闷啊.不会这个技术.
hibernate一定要主键
hibernate要关联的表一定要有主键,否则会自动生成一个。变成一个实体类和一个主键类。 用命令添加主键的语句是 :alter table userxx add constraint pk_userxx primary key(id);
Hibernate不能读取根据中文查询
自己动手搭建一个一个spring+springmvc+HIbernate项目,封装了一个basedao,但是根据中文查询不可以,根据英文查询可以,  坑啊!!! jdbc.url = jdbc:mysql://localhost:3306/cms?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true
Hibernate检索方式
Hibernate提供了几种检索方式,包括HQL,QBC,QBE。一、HQL(Hibernate Query Language)HQL查询时一种面向对象的查询,没有表,字段的概念,而是使用类,对象,属性的概念来查询所需要的信息。如果使用传统的JDBC API来查询数据,需要编写SQL语句,面向的是数据库中的表和属性,然后还要将查询结果以对象的形式放到集合中存储。Hibernate已经将数据库中的表格
HIBERNATE_QUERY
Hibernate支持强大且易于使用的面向对象查询语言(HQL)。 如果希望通过编程的方式创建查询,Hibernate提供了完善的按条件(Query By Criteria, QBC)以及按样例(Query By Example, QBE)进行Hibernate查询的功能。 你也可以用原生SQL(native SQL)描述Hibernate查询,Hibernate额外提供了将结果集(result set)转化为对象的支持。
Hibernate使用<generator class="native">时提示主键不能为null的解决方法
之前用Hibernate时弄了很久都没弄好,后来在网上看到别人说数据库建表时,主键的标识增量要设置为1。就抱着试一试的心态试了一下,结果就能插入了。   数据库建表时,主键的标识增量要设置为1 建表语句 CREATE TABLE table1 (      ID int IDENTITY(1,1)  NOT NULL )  ...
hibernate 一对多双向非主键关联
    字段,name多方字段,referencedColumnName一方字段,两个类都要有    @JoinColumn(name=&quot;APPOINTMENT_PERSON_ID&quot;,referencedColumnName=&quot;PERSON_ID&quot;)        建了一对多双向关联的两个类,当查询一方时,console显示根据关联列查询了多方,但结果为null,试了很久,依然是null,但在sq...
Hibernate基于主键的一对一关系----单向双向
hibernate基于主键的一对一关系,有两种,单向和双向。基于主键的一对一关系指的是,两张表使用的是同一个id。 现在先说说单向 新建一个java项目,名称是:15hibernate_single_one_to_one_primary 结构如下: 需要的jar包和如何从hibernate上获得jar包,请参见《Hibernate环境搭建和配置》
主键重复hql查询报错
org.hibernate.HibernateException: More than one row with the given identifier was found: 2463, for class: com.zhongkai.model.system.TSysUsers
hibernate标识符问题
转http://lz726.iteye.com/blog/116616 有关lazy的异常分析 对象表识符:        Hibernate 的 pojo 对象   import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuil...
JPA Hibernate 使用UUID做为主键的问题
当使用UUID类型的数据作为主键的时候,务必使id的数据类型为String而不是UUID,比如 应该写为:@Id @GenericGenerator(name = "system-uuid", strategy = "uuid2") @GeneratedValue(generator = "system-uuid") private String id;不能是:@Id @GenericGenera
Hibernate的Hql语句使用in关键字
Hibernate的Hql语句使用in关键字
Hibernate一对一主键关联(基于annotation注解方式)
[b]前言:使用@OneToOne注解可以建立实体bean之间的一对一的关联. 一对一关联有三种情况: 一是关联的实体都共享同样的主键, 二是其中一个实体通过外键关联到另一个实体的主键 (注意要模拟一对一关联必须在外键列上添加唯一约束). 三是通过关联表来保存两个实体之间的连接关系 (注意要模拟一对一关联必须在每一个外键上添加唯一约束). (1)共享主键来进行一对一关联映射(单向)[/b] ...
nhibernate实体类主键ID赋值问题
有个同事忽然来找我,说他遇到了一个问题,在调用nhibernate 进行update数据的时候报错,说是有数据行锁定。 看代码,没啥问题。 直接在PL/SQL developer里对数据库进行插入,也没啥问题。应该不是有事务没提交,表被锁了的情况。但我们水平低,为防万一,还是重启了数据库。好不容易重启后再试,问题依旧在,几度夕阳红。 后来将update改为insert,发...
关于hibernate反向生成实体类的问题-没有主键的表映射
问题描述:在使用hibernate反向工具的时候,生成的无主键实体类,在查询时结果为空的问题 特注:(本篇文章是针对于那些使用的Spring+Springmvc+hibernate开发框架的同学们的) 通常情况下,使用hibernate反向工具的时候,系统并不会提示你有哪几个表无主键,而是直接将无主键的对应表对应生成两个class文件(分别是xxx.class和xxxid.class  [
Hibernate mysql语句限制查询条数
使用limit;但是如果安装mysql语句的查询方式的话,在hibernate里面就会报错! 因为limit是不能被识别的关键字 query.setFirstResult(0); //设置开始查询的id query.setMaxResults(10);//设置查询的最大条数 ...
关于SpringData JPA 查询数据id全部为0的原因
我们在通过hibernate正向工程生成数据表后,表中的命名规则会将两个单词中间加上 _ 。我们不要随意的更改表明,如果更改,那么我们进行查询时Spring会再次通过正向工程生成我们更改的那一列,这时,如果我们表中有数据的话,正向工程生成的新列会为其附上默认值。我就是更改列id列的列名,然后进行查询时Spring正向工程生成一个新的id列,并为其赋值为0,这是后查询全部信息时查询的就是全部id为0...
Hibernate使用中对于String主键自动生成BUG配置
Unknown integral data type for ids : java.lang.String 今天遇到个常常遇到的bug,这个bug是主键映射引发的,hibernate对应Oracle主键手动和自动机制我还不是很清楚,这里主要是实体类定义的id是String类型的,然而映射是采用如此:用的生成器是native方式,不知道为何不能插入???当改为uuid后就解决了,原因是native
mybatis的多条件查询案例(动态sql)
mybatis的动态sql拼接方式介绍
Hibernate 查询用【in】条件去查询数据库的数据
Hibernate基础:使用Hibernate的API对数据库的信息进行查询【关键是要熟悉Hibernate的API】 第一步、首先要创建标准 :Criteria executableCriteria = getSession().createCriteria(paramClass); 第二步、添加约束条件: Restrictions.in(paramString, paramObje
hibernate双向1-N关联,但不能根据主表查从表的信息
比如表结构如下: