EntityManager em;
Query query = em.createQuery(sql);
在这里,如果sql内容是下面这样的
select fieldA,fieldB from testTable where fieldC ='xxx' order by fieldA那能够正确执行,没什么问题,但是如果sql是下面这样的select fieldA,fieldB from testTable where fieldC ='xxx' order by to_number(fieldA)那么执行就失败了,抛出openjpa-0.0.0-rnull nonfatal user error> org.apache.openjpa.persistence.ArgumentException: Encountered 异常。
这是为什么呢?对于出错的sql内容,拿到SQL Developer中执行是没有问题的。哪位高人给解释一下呢。
你是说在java生成字符串的时候存在转义的问题?我是在控制台输出拼好的SQL,然后copy出来在sql developer里执行,没有问题的。你说的转换问题具体指什么?
你换换代码把Query query = em.createQuery(sql);
换成Query query = em.createSqlQuery(sql);
试一试,上面那个支持hql的,下面支持原生的sql语句试一试!