2017-02-13 227 views
0

我试图在包含一列与日期(Oracle 11G)的模型中进行条件查询(JPA/Hibernate)。例如,我有CriteriaQuery月份和年份筛选器

  1. 13-JAN-09
  2. 15-JAN-09
  3. 16-MAR-09

我的功能是这样的:

public MyEntity getEntitiesFromCertainFilters(int a, int b, java.util.date c) 
{ 
    CriteriaBuilder builder = entityManager.getCriteriaBuilder(); 
    CriteriaQuery<MyEntity> query = builder.createQuery(MyEntity.class); 
    Root<MyEntity> root = query.from(MyEntity.class); 

    query.select(root).where (
     builder.equal (root.get ("id").get ("codEstablec") , establecimiento), 
     builder.equal (root.get ("id").get ("correlGrupo") , correlGrupo), 
     //HERE I NEED TO ADD FILTER BY C.MONTH AND C.YEAR FROM THE DATE ATTRIBUTE 
     ); 

    List <MyEntity> resultList = entityManager.createQuery(query).getResultList(); 
    return resultList.get(0); 
} 

如果我想按c =“01-JAN-09”进行过滤,则应返回:

  1. 13-JAN-09
  2. 15-JAN-09

任何帮助将非常感激,感谢 提前。

+0

那么目标是找到一个月内的日期? – Compass

+0

而今年,但我可以复制这些逻辑。 – Thrasher

回答

1

我假设你得到的日期值为this question

而不是做一个比较个别部分的日期凌乱的查询,只是创建两个包容性查询。

Date c; //this is your provided date. 
Date d; //this is your endpoint. 

d = new Date(c.getTime()); 
d.setMonth(d.getMonth()+1); // creates 01FEB09 

从此,所有你需要做的是找到日期GREATERTHANOREQUALTO c和LESSTHAN d。

+0

我虽然这样的事情,但二月是我的边界情况。我现在就试试这个。 – Thrasher