【发布时间】:2018-03-15 16:56:24
【问题描述】:
public List<Staffing> upcoming(){
List<Staffing> staffing = new ArrayList<Staffing>();
Criteria criteria = getCriteria();
criteria.add(Restrictions.isNotNull("startDate")).add(Restrictions.le("startDate", new Date()));
criteria.add(Restrictions.isNotNull("endDate")).add(Restrictions.ge("endDate", new Date()));
criteria.add(Restrictions.eq("softDelete", false));
criteria.setProjection(Projections.projectionList().add(Projections.groupProperty("user")));
DetachedCriteria maxDateQuery = DetachedCriteria.forClass(Employee.class);
maxDateQuery.add(Restrictions.in("user",criteria.list() ));
maxDateQuery.setProjection(Projections.max("endDate"));
staffing = criteria.list();
return staffing;
}
在这里,我正在尝试获取人员列表,但我正在获取对象数组列表,不确定出了什么问题,但我觉得投影有问题。我尝试的是根据最大 endDate 获取用户及其其他描述。
我有一个类 Staffing.java 有一个变量 Employee 用户(Employee 是另一个类)...日期 endDate ....日期 startDate,布尔 softDelete .....String projectName ...我想获取列表具有最大 endDate 的用户的人员配备.. 像用户可能有许多具有 endDate 的项目.. 我想获取每个用户具有最大 endDate 的列表
这是我的人员配备课
public class Staffing extends BaseObject {
/** The Constant serialVersionUID. */
private static final long serialVersionUID = -3254731507746702368L;
/** The id. */
private Long id;
/** The start date. */
private Date startDate;
/** The end date. */
private Date endDate;
/** The user. */
private Employee user;
/** The project. */
private Project project;
/**
* isDelete for soft delete of staffing.
*/
private boolean softDelete;
}
这是员工类
public class Employee extends BaseObject implements Serializable,
Comparable<Employee>, IAuditLog {
/**
* id
*/
private Long id;
/**
* username is required field
*/
private String username;
/**
* password is required field
*/
private String password;
/**
* firstname is required field
*/
private String firstName;
/**
* lastname is required field
*/
private String lastName;
/**
* personal Email is required field
*/
private String email;
/**
* primary phone number
*/
private String phoneNumber;
/**
* permanent Address
*/
private Address permanentAddress;
/**
* gender is required field
*/
private char gender;
/**
* Date of birth is required field
*/
private Date DOB;
}
【问题讨论】:
-
你能不能更有表现力!你想做什么?
-
我有一个类 Staffing.java 有一个变量 Employee 用户(Employee 是另一个类)...日期 endDate.... 日期 startDate, Boolean softDelete .....String projectName...我想获取具有最大 endDate 的用户的人员配置列表.. 就像用户可能有许多具有 endDate 的项目.. 我想获取每个用户具有最大 endDate 的列表
标签: hibernate criteria projection hibernate-criteria