相关疑难解决方法(0)

是否可以将null参数传递给Java JPA 2.1中的存储过程?

使用新的JPA 2.1 存储过程调用,有没有办法传递null参数?

以下是一个示例用法:

StoredProcedureQuery storedProcedure = em.createStoredProcedureQuery("get_item", Item.class);
storedProcedure.registerStoredProcedureParameter(0, String.class, ParameterMode.IN);
storedProcedure.registerStoredProcedureParameter(1, String.class, ParameterMode.IN);
storedProcedure.registerStoredProcedureParameter(2, Timestamp.class, ParameterMode.IN);

storedProcedure.setParameter(0, a);
storedProcedure.setParameter(1, b);
storedProcedure.setParameter(2, c);

storedProcedure.execute();
Run Code Online (Sandbox Code Playgroud)

此工程时,所有的参数,但是,当cnull它会失败,并从(PostgreSQL的)JDBC驱动程序错误.

Caused by: org.postgresql.util.PSQLException: No value specified for parameter 2
at org.postgresql.core.v3.SimpleParameterList.checkAllParametersSet(SimpleParameterList.java:216) [postgresql-9.3-1101.jdbc41.jar:]
    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:244) [postgresql-9.3-1101.jdbc41.jar:]
    at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:559) [postgresql-9.3-1101.jdbc41.jar:]
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:417) [postgresql-9.3-1101.jdbc41.jar:]
    at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:410) [postgresql-9.3-1101.jdbc41.jar:]
    at org.jboss.jca.adapters.jdbc.WrappedPreparedStatement.execute(WrappedPreparedStatement.java:404)
    at org.hibernate.result.internal.OutputsImpl.<init>(OutputsImpl.java:69) [hibernate-core-4.3.1.Final.jar:4.3.1.Final]
    ... 244 more
Run Code Online (Sandbox Code Playgroud)

我还考虑使用自己的类传递参数,例如:

storedProcedure.registerStoredProcedureParameter(0, InputParameters.class, ParameterMode.IN);
storedProcedure.setParameter(0, inputParameters);
Run Code Online (Sandbox Code Playgroud)

这失败了:

Caused by: java.lang.IllegalArgumentException: Type cannot be null
Run Code Online (Sandbox Code Playgroud)

我想因为它需要一个可以映射到SQL类型的类型.

有没有办法传递空参数?

java stored-procedures jpa

18
推荐指数
3
解决办法
3万
查看次数

标签 统计

java ×1

jpa ×1

stored-procedures ×1