| 
| Getting Session Using JpaHelper.getEntityManager [message #547795] | Mon, 19 July 2010 11:56  |  | 
| Eclipse User  |  |  |  |  | Hi, 
 I am using EclipseLink as my JPA provider and have a need to execute an Oracle stored function.  I have written the following method in my GenericServiceBean class:
 
 
public String executeStoredFunctionWithNamedArguments(String functionName,
            Map<String, String> namedArguments)
    {        
        Session session = JpaHelper.getEntityManager(em).getSession();
        
        StoredFunctionCall functionCall = new StoredFunctionCall();
        functionCall.setProcedureName(functionName);        
        functionCall.setResult("RESULT", String.class);
        
        ValueReadQuery query = new ValueReadQuery();
        query.setCall(functionCall);
        
        List<String> values = new ArrayList<String>();
        
        for (String key : namedArguments.keySet())
        {
            query.addArgument(key);
            values.add(namedArguments.get(key));
        }
        
        String status = (String)session.executeQuery(query, values);
        
        return status;
    }
 When the code executes, I get a NPE on the session.executeQuery.  I have confirmed that the em is not null (is being injected properly).
 
 Can someone tell me what I'm doing wrong?
 
 Thanks!
 |  |  |  | 
|  | 
|  | 
|  | 
| 
| Re: Getting Session Using JpaHelper.getEntityManager [message #547860 is a reply to message #547849] | Mon, 19 July 2010 16:50  |  | 
| Eclipse User  |  |  |  |  | I have figured out a way to make this work.  For future reference here is my final method: 
 
 
    public String executeStoredFunctionWithNamedArguments(String functionName,
            LinkedHashMap<String, String> namedArguments)
    {
        Session session = JpaHelper.getEntityManager(em).getServerSession();
        
        StoredFunctionCall functionCall = new StoredFunctionCall();
        functionCall.setProcedureName(functionName);        
        functionCall.setResult("RESULT", String.class);
                
        for (String key : namedArguments.keySet())
        {
            functionCall.addNamedArgumentValue(key, namedArguments.get(key));
        }
        
        ValueReadQuery query = new ValueReadQuery();
        query.setCall(functionCall);
        String status = (String)session.executeQuery(query);
        
        return status;
    }
 |  |  |  | 
Powered by 
FUDForum. Page generated in 0.04062 seconds