【问题标题】:Parsing of IN-Clause in JPQL typedqueryJPQL typedquery 中 IN 子句的解析
【发布时间】:2015-07-05 12:07:33
【问题描述】:

我正在尝试执行在 JPA 中运行良好但在 Open JPA 中无法运行的查询,你知道吗?

String iNString;
try {
            String query = "Delete FROM  Table1o WHERE o.Pk1 IN('"+ iNString+ "') and o.countryCode = '"+ countryCode+ "'";
            entityManager().createQuery(query).executeUpdate();
            LOGGER.info("Delete Query-----------------: " + query);

        } 
catch( Exception exception ) {
            throw new DataLayerException(exception.getMessage(),exception);
        }

错误:-org.springframework.dao.InvalidDataAccessApiUsageException:否 找到类型“class java.lang.String”的元数据。班级不是 增强。嵌套异常是 org.apache.openjpa.persistence.ArgumentException: No 找到类型“class java.lang.String”的元数据。班级不是 增强。

【问题讨论】:

  • o.Pk1 是表中的 RAW 字段。

标签: jpql openjpa


【解决方案1】:

EntityManager em = 关系.entityManager(); StringBuilder sbQueryString = new StringBuilder("SELECT o FROM table AS o WHERE 1 = 1"); if (StringUtils.isNotEmpty(DTO.getNameEng())) { sbQueryString.append(" AND LOWER (o.NameEng) LIKE :_NAME_ENG"); }

    sbQueryString.append(" order by o.relationshipNameEng");
    TypedQuery<Relationship> q = em.createQuery(sbQueryString.toString(), User.class);
    if (StringUtils.isNotEmpty(DTO.getRelationshipNameEng())) {
        q.setParameter("_NAME_ENG", "%" + DTO.getNameEng().toLowerCase() + "%");
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-08
    • 2021-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-01
    • 2021-06-23
    • 2021-02-13
    相关资源
    最近更新 更多