createStoredProcedureQuery is not resolved



这是我的代码,createStoredProcedureQuery在eclipse中有红线,但没有得到解决,我尝试了很多方法仍然无法找到问题所在。

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();
}

您需要声明并设置参数:

/*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");

--请记住,存储过程中的参数名称必须与声明的相同

JPA 2.1提供了该方法。如果你的CLASSPATH中没有包含JPA API 2.1 jar(而是使用JPA API 2.0),那么你就会得到它。修复JPA API jar版本(删除JPA API 2.0并包含JPA API 2.1)

相关内容

最新更新