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

使用条件API确定实体字段类型,而不会在intelij/compiler中显示警告

  •  0
  • Jim  · 技术社区  · 6 年前

    给定以下代码,我试图确定实体模型中的特定字段是否是 java.util.Date CriteriaBuilder .

    在没有警告的情况下安全地确定实体字段类型的正确方法是什么?

    CriteriaBuilder builder = em.getCriteriaBuilder();
    CriteriaQuery<ExclFlagViewBE> cq = builder.createQuery(ExclFlagViewBE.class);
    Root<ExclFlagViewBE> entity = cq.from(ExclFlagViewBE.class);
    
    Expression<String> field = entity.get(key);
    Class<? extends String> type = field.getJavaType();
    if (Objects.equals(type, Date.class)) {
        // EVALUATES TO TRUE HERE WHEN THE FIELD IS A java.util.Date
    }
    

    equals() between objects of inconvertible types
    Class<capture of ? extends String> and Class<Date>
    

    type.equals(Date.class) 当字段是日期时,也会计算为true,但会产生相同的警告(显然)

    0 回复  |  直到 6 年前