hibernate 使用org.hibernate.criterion.Example 查询无效

简介:

今天使用Example查询,结果发现设置的条件无效.

查询代码:

 

Java代码   收藏代码
  1. /*** 
  2.      *  
  3.      * @param obj 
  4.      * @param includeZeros 
  5.      * @return 
  6.      */  
  7.     private Criteria getCriteria( Object obj, boolean includeZeros) {  
  8.         if (obj == null) {  
  9.             return this.sessionFactory.getCurrentSession().createCriteria(clz);  
  10.         } else {  
  11.             Example example = Example.create(obj);  
  12.             if (!includeZeros) {  
  13.                 example = example.excludeZeroes();  
  14.             }  
  15.             Criteria criteria = this.sessionFactory.getCurrentSession()  
  16.                     .createCriteria(clz);  
  17.             criteria.add(example);  
  18.             return criteria;  
  19.         }  
  20.     }  

 测试

 

 

Java代码   收藏代码
  1. OrdersDao OrdersDao=(OrdersDao)ctx.getBean("ordersDao");  
  2. Orders orders=new Orders();  
  3.         orders.setBarCode("00001925");  
  4. List list=new ArrayList();  
  5. //      long count=osTypeDao.listByPage(osType, false, list, 0, 5);  
  6.         long count=ordersDao.listByPage(orders, false, list, 05);  
  7.         System.out.println("count:"+count);  

 但是执行时,发现where后面是1=1,即设置的查询条件(orders.setBarCode("00001925"))没有起作用.

 

非常奇怪,刚开始使用的sqlserver2000数据库,我以为是sqlserver2000的问题,所以我换成了MySQL,但是发现mysql依然如故.所以确定不是数据库的问题./

可能是代码的问题

Orders 结构如下:

Java代码   收藏代码
  1. /*** 
  2.  * Note:不允许修改表结构<br />table:orders<br /> 
  3.  * 订单类 
  4.  * @author huangwei 
  5.  * @since 2014-09-02 
  6.  */  
  7. @Entity  
  8. @Table(name = "orders")  
  9. public class Orders {  
  10.   
  11.     /*** 
  12.      * 条码,订单号 
  13.      */  
  14.       
  15.     private String barCode;  
  16.     /*** 
  17.      * 本订单返工次数,新单为0,返工累加∑1-n 
  18.      */  
  19.     private int serial;  
  20. /*** 
  21.      * 条码,订单号 
  22.      * @return 
  23.      */  
  24.     @Id  
  25.     @Column(name="Order_ID",unique=true)  
  26.     public String getBarCode() {  
  27.         return barCode;  
  28.     }  
  29.     public void setBarCode(String barCode) {  
  30.         this.barCode = barCode;  
  31.     }  
  32.   
  33. }  

 后来发现突然发现其他字段没问题,那么barCode有什么特殊的地方吗?

再一看表,原来它是主键.

相关文章
|
8月前
|
Java 数据库连接
Hibernate中使用Criteria查询及注解——(Dept.java)
Hibernate中使用Criteria查询及注解——(Dept.java)
|
5月前
|
API Java 数据库连接
从平凡到卓越:Hibernate Criteria API 让你的数据库查询瞬间高大上,彻底告别复杂SQL!
【8月更文挑战第31天】构建复杂查询是数据库应用开发中的常见需求。Hibernate 的 Criteria API 以其强大和灵活的特点,允许开发者以面向对象的方式构建查询逻辑,同时具备 SQL 的表达力。本文将介绍 Criteria API 的基本用法并通过示例展示其实际应用。此 API 通过 API 构建查询条件而非直接编写查询语句,提高了代码的可读性和安全性。无论是简单的条件过滤还是复杂的分页和连接查询,Criteria API 均能胜任,有助于提升开发效率和应用的健壮性。
182 0
|
5月前
|
SQL Java 数据库连接
|
5月前
|
缓存 Java 数据库连接
什么是 Hibernate 查询语言或 HQL?
【8月更文挑战第21天】
160 0
|
5月前
|
SQL Java 数据库连接
在 Hibernate 中何时使用条件查询?
【8月更文挑战第21天】
63 0
|
5月前
|
缓存 Java 数据库连接
Hibernate 中的查询缓存是什么?
【8月更文挑战第21天】
49 0
|
5月前
|
SQL 安全 Java
|
8月前
|
Java 数据库连接
Hibernate中使用Criteria查询及注解——(Emp.hbm.xml)
Hibernate中使用Criteria查询及注解——(Emp.hbm.xml)
|
8月前
|
Java 数据库连接
Hibernate中使用Criteria查询及注解——( EmpCondition)
Hibernate中使用Criteria查询及注解——( EmpCondition)
|
8月前
|
Java 数据库连接
Hibernate中使用Criteria查询及注解——(DeptTest.java)
Hibernate中使用Criteria查询及注解——(DeptTest.java)