这是我的PostgreSQL函数:
salvarArquivoGeometricoCasoZeroPOINT
(dimensao text,tableName text,tuplas text[],srid text)
它有一个 text[]
参数,我想从我的 JPQL 传递一个 Java String[]
到它:
public String salvarGeometriaCaso0(String[] tuplas,FileDto arquivo){
Query query =
em().createNativeQuery("select
salvarArquivoGeometricoCasoZeroPOINT(?1,?2,?3,?4)");
query.setParameter(1,arquivo.getGeo());//String
query.setParameter(2,arquivo.getTable());/String
query.setParameter(3,tuplas);//String[]
query.setParameter(4,arquivo.getSrid());//String
return (String) query.getSingleResult();//function returns a Text, so cast to String
}
上述代码出现以下异常:
ERROR] Internal Exception: org.postgresql.util.PSQLException: Can not infer a SQL
type to use for an instance of [Ljava.lang.String;.
Use setObject () with an explicit Types value to specify the type to use.
所以我不确定如何从EclipseLink中调用我的函数。
setObject()
并显式指定Types
值来指定要使用的类型”吗? - Matt Ballquery.setParameter(3, tuplas)
,而是在PreparedStatement
上调用setObject()
。http://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html - Matt BallString[]
映射到text[]
。 - Craig Ringer