我在努力学习冬眠。现在我正在学习标准查询。在这里,我遇到了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;
}
}发布于 2015-08-04 08:49:39
isEmpty()是用于列表的方法。您正在检查薪资,这可能不是一个列表,但更像是浮点数之类的。使用类似于criteria.add(Restrictions.ne("salary",""));或criteria.add(Restrictions.isNotNull("salary"));之类的东西。
https://stackoverflow.com/questions/31804364
复制相似问题