问题
here is my code and createStoredProcedureQuery has redline underneath in eclipse, and not resolved, I tried many ways still could not get what is wrong.
private static EntityManagerFactory factory;
public static void main(String[] args) {
factory = Persistence.createEntityManagerFactory("mypersistenceUnit");
EntityManager em = factory.createEntityManager();
// Create call stored procedure
em.getTransaction().begin();
StoredProcedureQuery storedProcedure = em.**createStoredProcedureQuery**("getCode");
// set parameters
storedProcedure.registerStoredProcedureParameter("name", String.class, ParameterMode.IN);
storedProcedure.registerStoredProcedureParameter("num", String.class, ParameterMode.IN);
storedProcedure.registerStoredProcedureParameter("code", String.class, ParameterMode.OUT);
// execute SP
storedProcedure.execute();
// get result
String code= (String)storedProcedure.getOutputParameterValue("code");
System.out.println("code is: " + code);
em.getTransaction().commit();
em.close();
}
回答1:
you need declare and set parameter:
/*Declare parameters*/
storedProcedure.registerStoredProcedureParameter( "name", String.class,ParameterMode.IN);
storedProcedure.registerStoredProcedureParameter( "num", String.class,ParameterMode.IN);
storedProcedure.registerStoredProcedureParameter("code", String.class, ParameterMode.OUT);
/*set parameter value*/
storedProcedure.setParameter("name", "value_name");
storedProcedure.setParameter("num", "value_num");
storedProcedure.execute();
// get result
String code= (String)storedProcedure.getOutputParameterValue("code");
--remember, the parameters name in the store procedure must be the same to declared
回答2:
JPA 2.1 is what provides that method. If you don't include the JPA API 2.1 jar in your CLASSPATH (and instead use JPA API 2.0) then you will get that. Fix your JPA API jar version (remove JPA API 2.0 and include JPA API 2.1)
来源:https://stackoverflow.com/questions/34170256/createstoredprocedurequery-is-not-resolved