英镑签到JPA字段名称

时间:2014-12-06 14:08:06

标签: java jpa

我们的数据库包含很多字段名称为pound sign (#)的字段。如果我们尝试在JPA中使用原生查询,则会对# as a parameter进行处理。这是一个例子:

public List<?> getRecordList(String sql){
    Query query = getEntityManager().createNativeQuery(sql);
    return query.getResultList();
}

List<?> r = getRecordList("SELECT VENDOR.\"ve#\", ITEM.\"item#\" FROM ITEM LEFT JOIN VENDOR ON ITEM.\"itemve#\" = VENDOR.\"ve#\");

执行此操作时,我们收到以下错误:

Caused by: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: Parameter index out of range (4 > number of parameters, which is 3).
Error Code: 0
Call: SELECT VENDOR."ve?, ITEM."item? FROM ITEM LEFT JOIN VENDOR ON ITEM."itemve? = VENDOR."ve? 

1 个答案:

答案 0 :(得分:1)

如果你使用JPQL它可以工作,但原生查询不能。