Hibernate Criteria 中两个日期列的最大值
Max of two Date columns in Hibernate Criteria
我有两个日期列,一个是 createDate,另一个是 modifiedDate。
现在我想得到这两个日期列的最大值。
ProjectionList projectionList = Projections.projectionList();
projectionList.add( Projections.max("createdDate"));
如何在 Projection 中添加另一个日期。并找到两者的最大日期。
无法找到执行此操作的任何特定方法。
实体是:-
package com.xyz.DemoEntity;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import org.hibernate.annotations.Formula;
@Entity
public class DemoEntity {
private Integer id;
private Date createdOn;
private Date modifiedOn;
@Formula("CASE WHEN createdOn > modifiedOn THEN createdOn ELSE modifiedOn END")
private Date maxDate;
/**
* @return the id
*/
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
public Integer getId() {
return id;
}
/**
* @param id the id to set
*/
public void setId(Integer id) {
this.id = id;
}
@Column(updatable=false)
@Temporal(TemporalType.DATE)
public Date getCreatedOn() {
return createdOn;
}
public void setCreatedOn(Date createdOn) {
this.createdOn = createdOn;
}
@Temporal(TemporalType.DATE)
public Date getModifiedOn() {
return modifiedOn;
}
public void setModifiedOn(Date modifiedOn) {
this.modifiedOn = modifiedOn;
}
}
你应该引入一个用@Formula注解的人工列
像这样
@Formula("CASE WHEN createDate > modifiedDate THEN createDate ELSE modifiedDate END")
private Date maxDate;
然后用projectionList.add( Projections.max("maxDate"));
得到最大值
我有两个日期列,一个是 createDate,另一个是 modifiedDate。 现在我想得到这两个日期列的最大值。
ProjectionList projectionList = Projections.projectionList();
projectionList.add( Projections.max("createdDate"));
如何在 Projection 中添加另一个日期。并找到两者的最大日期。 无法找到执行此操作的任何特定方法。
实体是:-
package com.xyz.DemoEntity;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import org.hibernate.annotations.Formula;
@Entity
public class DemoEntity {
private Integer id;
private Date createdOn;
private Date modifiedOn;
@Formula("CASE WHEN createdOn > modifiedOn THEN createdOn ELSE modifiedOn END")
private Date maxDate;
/**
* @return the id
*/
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
public Integer getId() {
return id;
}
/**
* @param id the id to set
*/
public void setId(Integer id) {
this.id = id;
}
@Column(updatable=false)
@Temporal(TemporalType.DATE)
public Date getCreatedOn() {
return createdOn;
}
public void setCreatedOn(Date createdOn) {
this.createdOn = createdOn;
}
@Temporal(TemporalType.DATE)
public Date getModifiedOn() {
return modifiedOn;
}
public void setModifiedOn(Date modifiedOn) {
this.modifiedOn = modifiedOn;
}
}
你应该引入一个用@Formula注解的人工列
像这样
@Formula("CASE WHEN createDate > modifiedDate THEN createDate ELSE modifiedDate END")
private Date maxDate;
然后用projectionList.add( Projections.max("maxDate"));
得到最大值