首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate Restrictions.isEmpty()不工作

Hibernate Restrictions.isEmpty()不工作
EN

Stack Overflow用户
提问于 2015-08-04 08:31:24
回答 1查看 6.9K关注 0票数 4

我在努力学习冬眠。现在我正在学习标准查询。在这里,我遇到了Restrictions.isEmpty()的麻烦。有人能帮我一下吗?以下是我的尝试:

用我的方法>>>

代码语言:javascript
复制
Criteria cr = session.createCriteria(EmployeeCriteria.class);
        cr.add(Restrictions.isEmpty("salary"));
        List results = cr.list();           
        for (Iterator iterator = results.iterator(); iterator.hasNext();) {
            EmployeeCriteria employee = (EmployeeCriteria) iterator.next();
            System.out.println("#####  - Employee #" + employee.getId() + " - #####");
            System.out.println("===============================");
            System.out.print("Employee ID: " + employee.getId());
            System.out.print(" ||  First Name: " + employee.getFirstName());
            System.out.print(" ||  Last Name: " + employee.getLastName());
            System.out.println(" ||  Salary: " + employee.getSalary());
        }

它给出了一个错误,>>>

代码语言:javascript
复制
org.hibernate.MappingException: Property path [criteria.EmployeeCriteria.salary] does not reference a collection
at org.hibernate.criterion.AbstractEmptinessExpression.getQueryableCollection(AbstractEmptinessExpression.java:84)
at org.hibernate.criterion.AbstractEmptinessExpression.toSqlString(AbstractEmptinessExpression.java:63)
at org.hibernate.loader.criteria.CriteriaQueryTranslator.getWhereCondition(CriteriaQueryTranslator.java:380)
at org.hibernate.loader.criteria.CriteriaJoinWalker.<init>(CriteriaJoinWalker.java:113)
at org.hibernate.loader.criteria.CriteriaJoinWalker.<init>(CriteriaJoinWalker.java:82)
at org.hibernate.loader.criteria.CriteriaLoader.<init>(CriteriaLoader.java:92)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1697)
at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:347)

MY EmployeeCriteria POjo

代码语言:javascript
复制
    import javax.persistence.*;

@Entity
@Table(name = "employee_criteria")
public class EmployeeCriteria {
   @Id @GeneratedValue
   @Column(name = "id")
   private int id;

   @Column(name = "first_name")
   private String firstName;

   @Column(name = "last_name")
   private String lastName;

   @Column(name = "salary")
   private int salary;  

   public EmployeeCriteria() {}
   public int getId() {
      return id;
   }
   public void setId( int id ) {
      this.id = id;
   }
   public String getFirstName() {
      return firstName;
   }
   public void setFirstName( String first_name ) {
      this.firstName = first_name;
   }
   public String getLastName() {
      return lastName;
   }
   public void setLastName( String last_name ) {
      this.lastName = last_name;
   }
   public int getSalary() {
      return salary;
   }
   public void setSalary( int salary ) {
      this.salary = salary;
   }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-04 08:49:39

isEmpty()是用于列表的方法。您正在检查薪资,这可能不是一个列表,但更像是浮点数之类的。使用类似于criteria.add(Restrictions.ne("salary",""));criteria.add(Restrictions.isNotNull("salary"));之类的东西。

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

https://stackoverflow.com/questions/31804364

复制
相关文章

相似问题

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