如何在 JPA 中解析 "illegal use of LONG datatype"

how to resolve "illegal use of LONG datatype" in JPA

我正在将 Hql 查询转换为 jpql 但出现错误 非法使用 LONG 数据类型

String jpqlQuery="select entity "+
            "FROM Entity entity "+
            "WHERE  CAST(SUBSTRING(entity.nameId,2,12) AS long) >CAST( :String1 AS long) "+
            "AND CAST(SUBSTRING(entity.nameId,2,12) AS long)<= CAST( :String2 AS long) ";

所以谁能知道如何在 jpql 中为上述查询转换 as long 吗?

  • 尝试使用 decimalNUMERIC 而不是 long :

像这样

CAST(SUBSTRING(entity.nameId, 2, 12) AS DECIMAL(2,12))
  • 并且不要传递字符串并将其转换为查询,而是可以在将其传递给查询之前对其进行转换:

例如:

String jpqlQuery = "select entity "+
            "FROM Entity entity "+
            "WHERE  CAST(SUBSTRING(entity.nameId, 2, 12) AS DECIMAL(2,12)) > value1 "+
            "AND CAST(SUBSTRING(entity.nameId, 2, 12) AS DECIMAL(2,12)) <= value2 ";

Query query = session.createQuery(jpqlQuery);

query.setParametter("value1", Long.valueOf(value1));
query.setParametter("value2", Long.valueOf(value2));