gpt4 book ai didi

java - Criteria查询月份和年份过滤器

转载 作者:行者123 更新时间:2023-12-01 19:07:02 25 4
gpt4 key购买 nike

我正在尝试在包含一列日期的模型中进行条件查询(JPA/Hibernate)(Oracle 11G)。例如,我有

  1. 2009 年 1 月 13 日
  2. 2009 年 1 月 15 日
  3. 2009 年 3 月 16 日

我的功能是这样的:

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. 2009 年 1 月 13 日
  2. 2009 年 1 月 15 日

任何帮助将不胜感激,提前致谢。

最佳答案

您可以使用 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)
);

关于java - Criteria查询月份和年份过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59530865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com