首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么org.hibernate.criterion.Example不能工作?

为什么org.hibernate.criterion.Example不能工作?
EN

Stack Overflow用户
提问于 2014-09-25 16:55:43
回答 1查看 545关注 0票数 1

我正在使用Hibernate,因为我使用org.hibernate.criterion.Example来获取运行fine.But的数据,在添加了布尔属性之后,.Please没有得到值,请检查下面的代码

代码语言:javascript
复制
@Entity
@Table(name="USER_DETAILS")
public class User extends BaseEntity {

private String name;

private String lname;

private Integer salary;

@Type(type="yes_no")
private boolean newModel; 

@Formula("salary*12")
private Long totalSalary;

}

CriteriaExample.java

代码语言:javascript
复制
 public class CriteriaExample {
   public static void main(String[] args) {
            SessionFactory sessionFactory = new  Configuration().configure().buildSessionFactory();

    Session session = sessionFactory.openSession();
    User user1 = new User();
    user1.setName("Balu");

    Criteria cr = session.createCriteria(User.class);
          cr .add(Example.create(user1));

   List list = cr.list();
    System.out.println(list.isEmpty()+".............."+list.size());
}

现在我得到的是空.But,当我删除以下内容时,我的DataBase中有10条带有Balu名称的记录

代码语言:javascript
复制
         @Type(type="yes_no")
        private boolean newModel; 

我从database.please获得记录帮助我--这是我的查询日志:

代码语言:javascript
复制
select this_.Id as Id1_1_1_, this_.createDate as createDa2_1_1_, this_.updatedOn as      updatedO3_1_1_, this_.address_Id as address8_1_1_, this_.lname as lname4_1_1_, this_.name as name5_1_1_, this_.newModel as newModel6_1_1_, this_.salary as salary7_1_1_, this_.salary*12 as formula0_1_, address2_.Id as Id1_0_0_, address2_.createDate as createDa2_0_0_, address2_.updatedOn as updatedO3_0_0_, address2_.streetName as streetNa4_0_0_ from USER_DETAILS this_ left outer join Address address2_ on this_.address_Id=address2_.Id where (this_.name=? and this_.newModel=?)

我没有在示例对象中设置newModel值,而是像上面这样创建的查询,还有一件事

当我将布尔值改为布尔值时,它正在工作,fine.any帮助我

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-25 19:11:22

boolean可以有两个值: true或false。不可能是空的。因此,如果不为布尔属性设置任何值,则其默认值不是null,而是false。因此,示例查询查找名为"Balu“的用户,并在数据库中查找newModel值为false ("no”)。因此,很明显,如果所有名为Balu的用户都有一个真正的(“是”) newModel,查询就不会返回任何内容。

使用Boolean而不是boolean解决了这个问题,因为布尔字段的默认值为null,在创建示例查询时忽略了null属性。

注意,查询不像您在问题中所说的那样返回null。它返回一个空列表。那完全不同了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26044071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档