代码之家  ›  专栏  ›  技术社区  ›  Nitek

JPA构造正在查找错误的构造函数

  •  3
  • Nitek  · 技术社区  · 8 年前

    我们正在尝试使用JPA construct() API将数据映射到我们的对象中,但不幸的是,它似乎忽略了类型转换:

    CriteriaBuilder cb = this.entityManager.getCriteriaBuilder();
    CriteriaQuery<ReportDto> q = cb.createQuery(ReportDto.class);
    q.select(cb.construct(DailyReportDto.class, r.get(createdYear),
        r.get(KpiSnapshot_.createdDay),
        cb.toLong(cb.avg(r.get(KpiSnapshot_.value)))));
    

    结果为:

    java.lang.NoSuchMethodException: DailyReportDto.<init>(java.lang.Integer, java.lang.Integer, java.lang.Double)
    

    这对我来说没有意义,因为 toLong 应该会阻止它寻找替身,不是吗?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Chris    8 年前

    如果需要,构造函数需要处理将Double转换为Long的操作。