JPA + Hibernate - Executar procedure Firebird

Boa Noite Pessoal,

Estou tentando executar uma procedure atraves de jpa + Hibernate + Firebird.
Porem está dando o seguinte erro.

java.lang.IllegalArgumentException: Named query not found: SP_COPIA_PERMISSAO

Estou fazendo da Seguinte Maneira.

public boolean executaProcedure(String pProcedure, List<String> pParametros, String pEmpresa){
		EntityManager entityManager = getEntityManager(pEmpresa);
				
		try{
			entityManager.getTransaction().begin();
    	  	entityManager.createNamedQuery(pProcedure).setParameter("VCODUSUARIOORIGEM",pParametros.get(0))
    	  										.setParameter("VCODUSUARIODESTINO",pParametros.get(1));
    	  	entityManager.getTransaction().commit();
    	  	return true;
		}catch(Exception e){
			System.out.println("Erro ao executar a procedure "+ pProcedure +" Motivo : " + e);
			entityManager.getTransaction().rollback();
			return false;
		}
	}	

Meu persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
  <persistence-unit name="Consagro" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <class>com.br.model.Usuario</class>
    <class>com.br.model.Path_Usu</class>
    <class>com.br.model.Path</class>
    <class>com.br.model.Log_Acesso</class>
    <class>com.br.model.Folders</class>
    <properties>
      <property name="hibernate.connection.username" value="sysdba"/>
      <property name="hibernate.connection.driver_class" value="org.firebirdsql.jdbc.FBDriver"/>
      <property name="hibernate.connection.password" value="masterkey"/>
      <property name="hibernate.connection.url" value="jdbc:firebirdsql:noteisael/3050:D:/IFsoluctions/Dados/consagro/Dados.FDB"/>
      <property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/>
      <property name="hibernate.hbm2ddl.auto" value="update"/>
      <property name="hibernate.dialect" value="org.hibernate.dialect.FirebirdDialect"/> 
      <property name="hibernate.show_sql" value="true"/>
    </properties>
  </persistence-unit>
  <persistence-unit name="Fmc" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <class>com.br.model.Usuario</class>
    <class>com.br.model.Path_Usu</class>
    <class>com.br.model.Path</class>
    <class>com.br.model.Log_Acesso</class>
    <class>com.br.model.Folders</class>
    <properties>
      <property name="hibernate.connection.username" value="sysdba"/>
      <property name="hibernate.connection.driver_class" value="org.firebirdsql.jdbc.FBDriver"/>
      <property name="hibernate.connection.password" value="masterkey"/>
      <property name="hibernate.connection.url" value="jdbc:firebirdsql:noteisael/3050:D:/IFsoluctions/Dados/consagro/Dados.FDB"/>
      <property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/>
      <property name="hibernate.hbm2ddl.auto" value="update"/>
      <property name="hibernate.dialect" value="org.hibernate.dialect.FirebirdDialect"/> 
      <property name="hibernate.show_sql" value="true"/>
    </properties>
  </persistence-unit>  
</persistence>

A Classe de Usuario

package com.br.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.OrderBy;

@Entity
@Table(name="USUARIO")
public class Usuario {
	
	@Id
    @GeneratedValue(strategy = GenerationType.AUTO)
	int COD_USUARIO;
	@Column
    String NOM_USUARIO;
	@Column
    String NOM_LOGIN;
	@Column
	String COD_SENHA;
	@Column
	String SIT_ADMIN;
	
	@OrderBy("NOM_USUARIO ASC")

	public int getCOD_USUARIO() {
		return COD_USUARIO;
	}
	
	public void setCOD_USUARIO(int cOD_USUARIO) {
		COD_USUARIO = cOD_USUARIO;
	}
	
	public String getNOM_USUARIO() {
		return NOM_USUARIO;
	}
	
	public void setNOM_USUARIO(String nOM_USUARIO) {
		NOM_USUARIO = nOM_USUARIO;
	}
	
	public String getNOM_LOGIN() {
		return NOM_LOGIN;
	}
	
	public void setNOM_LOGIN(String nOM_LOGIN) {
		NOM_LOGIN = nOM_LOGIN;
	}
	
	public String getCOD_SENHA() {
		return COD_SENHA;
	}
	
	public void setCOD_SENHA(String cOD_SENHA) {
		COD_SENHA = cOD_SENHA;
	}
	
	public String getSIT_ADMIN() {
		return SIT_ADMIN;
	}
	
	public void setSIT_ADMIN(String sIT_ADMIN) {
		SIT_ADMIN = sIT_ADMIN;
	} 	
}

Eu procurei alguns exemplos na net, porem fazem referencia a uma notação de procedure, porém quando coloquei ela a mesma não foi identificada.
Se alguem puder ajudar, agradeço.

Mais uma coisa. Gostaria de saber se consigo ordernar o resultado da consulta ?

grato.

Ve se te ajuda esta solucao: http://stackoverflow.com/questions/4960049/executing-stored-procedures-in-firebird-using-jpa-namedstoredprocedurequery

Boa Noite JavaFlex,

Fiz o seguinte codigo

[code]
try{

		entityManager.getTransaction().begin();
		Query query = entityManager.createNamedQuery(pProcedure)
		.setParameter("VCODUSUARIOORIGEM",pParametros.get(0))
		.setParameter("VCODUSUARIODESTINO", pParametros.get(1));


		Integer result = 23;
		try {
			System.out.println("query = " + query.getSingleResult());
			return true;
		} catch (Exception e) {
			result = null;
			e.printStackTrace();
		}		
	}catch(Exception e){
		System.out.println("Erro ao executar a procedure "+ pProcedure +" Motivo : " + e);
		System.out.println("SQL : " + vSql);
		entityManager.getTransaction().rollback();
		return false;
	}[/code]

Porem está apresentando o seguinte erro

Erro ao executar a procedure SP_COPIA_PERMISSAO Motivo : java.lang.IllegalArgumentException: Named query not found: SP_COPIA_PERMISSAO SQL : execute procedure SP_COPIA_PERMISSAO('1','312')

[quote=aszarael]Boa Noite JavaFlex,

Fiz o seguinte codigo

[code]
try{

		entityManager.getTransaction().begin();
		Query query = entityManager.createNamedQuery(pProcedure)
		.setParameter("VCODUSUARIOORIGEM",pParametros.get(0))
		.setParameter("VCODUSUARIODESTINO", pParametros.get(1));


		Integer result = 23;
		try {
			System.out.println("query = " + query.getSingleResult());
			return true;
		} catch (Exception e) {
			result = null;
			e.printStackTrace();
		}		
	}catch(Exception e){
		System.out.println("Erro ao executar a procedure "+ pProcedure +" Motivo : " + e);
		System.out.println("SQL : " + vSql);
		entityManager.getTransaction().rollback();
		return false;
	}[/code]

Porem está apresentando o seguinte erro

Erro ao executar a procedure SP_COPIA_PERMISSAO Motivo : java.lang.IllegalArgumentException: Named query not found: SP_COPIA_PERMISSAO SQL : execute procedure SP_COPIA_PERMISSAO('1','312')[/quote]

Você não seguiu o que foi usado no exemplo que passei usando StoredProcedureQuery. Olhe lá ou pesquise mais sobre StoredProcedureQuery.

Já tentou usar createNativeQuery?