如何解决"非法使用LONG数据类型"在JPA

时间:2017-11-27 07:33:10

标签: hibernate hql

我正在将Hql Query转换为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中为上述查询进行转换吗?

1 个答案:

答案 0 :(得分:0)

  • 尝试使用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));