Rco*_*val 5 java oracle spring hibernate javax.persistence
我正在尝试在包含一列日期 (Oracle 11G) 的模型中进行条件查询 (JPA/Hibernate)。例如,我有
我的功能是这样的:
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" 过滤,它应该返回:
任何帮助将不胜感激,提前致谢。
小智 11
您可以使用 builder.function 方法。例如
query.select(root).where (
    builder.equal ( root.get ( "id" ).get ( "codEstablec" ) , establecimiento),
    builder.equal ( root.get ( "id" ).get ( "correlGrupo" ) , correlGrupo),
    builder.equal(builder.function("YEAR", Integer.class, root.get("DATE_FIELD") ), C.YEAR),
    builder.equal(builder.function("MONTH", Integer.class, root.get("DATE_FIELD")), C.MONTH) 
    );
| 归档时间: | 
 | 
| 查看次数: | 5624 次 | 
| 最近记录: |