2017-02-13 228 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