我正在尝试按一年搜索,但在我的实体中,它是日历。 我正在使用条件,这是条件代码:
CriteriaBuilder cb = em.getcriteriaBuilder();
CriteriaQuery<EntradaAngulo> cq = cb.createQuery(EntradaAngulo.class);
Root<EntradaAngulo> root = cq.from(EntradaAngulo.class);
List<Predicate> predicates = new ArrayList<>();
Join<EntradaAngulo,CarreraHorizontal> childJoin = null;
Join<CarreraHorizontal,Empleado> childJoin2 = null;
Join<EntradaAngulo,AnguloEvaluacion> fatherJoin = null;
if (!StringUtils.isEmpty(apellido1) || !StringUtils.isEmpty(apellido2) || !StringUtils.isEmpty(nombre)
|| !StringUtils.isEmpty(numEmpleado) || manual || enIncidenciaFilter || habilitadoFilter || !StringUtils.isEmpty(anyo)) {
childJoin = root.join("carreraHorizontal",JoinType.LEFT);
childJoin2 = childJoin.join("empleado");
fatherJoin = root.join("anguloEvaluacion",JoinType.LEFT);
if(!StringUtils.isBlank(anyo)) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR,Integer.parseInt(anyo)+1);
calendar.set(Calendar.DAY_OF_MONTH,1);
calendar.set(Calendar.MONTH,0);
Calendar calendarAux = Calendar.getInstance();
calendarAux.set(Calendar.YEAR,Integer.parseInt(anyo)-1);
calendarAux.set(Calendar.DAY_OF_MONTH,1);
calendarAux.set(Calendar.MONTH,0);
predicates.add(cb.between((Calendar)fatherJoin.get("anyo"),calendar,(Calendar) fatherJoin.get("anyo"),calendarAux));
//predicates.add(cb.between(fatherJoin.get("anyo"),fatherJoin.get("anyo"),fatherJoin.get("anyo")));
predicates.add(cb.greaterThanOrEqualTo(fatherJoin.get("anyo"),calendar));
这是我的实体:
@Entity
@Table(name = "angulo_evaluacion")
public class AnguloEvaluacion implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
/**
*/
@NotNull
@Column(name = "ae_anyo",unique = true)
@Temporal(TemporalType.TIMESTAMP)
@DateTimeFormat(style = "M-")
private Calendar anyo;
我试图在两个Calendar之间进行搜索,以便可以在中间输入年份,但是我从IDE中获取语法错误。 有人在想我要忽略的东西吗?