我正在努力学习休眠.现在我正在研究标准查询.在这里,我遇到了Restrictions.isEmpty()的问题.有人可以帮我这个吗?以下是我的尝试::
在我的方法>>>
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());
        }
并且它给出了这个错误>>>
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
    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;
   }
}
Rob*_*enu 12
isEmpty()是列表的方法.你正在检查工资,这可能不是一个清单,但更像是浮动或其他东西.使用类似criteria.add(Restrictions.ne("salary",""));或相似的东西criteria.add(Restrictions.isNotNull("salary"));.
| 归档时间: | 
 | 
| 查看次数: | 4992 次 | 
| 最近记录: |