findByNamedQuery retornando NULL

Boa tarde,
estou trabalhando em uma aplicação que precisa mapear uma tabela no db2 e executar uma consulta, a aplicação sobe sem erros porém ao executar a NamedQuery
cai em uma exceção e a mensagem é null, estou apanhando a um bom tempo e não consegui encontrar a causa:

Tabela do banco:

CREATE TABLE QUOTECRM0
(
   CUNO char(7) NOT NULL,
   RFDCNO char(10) NOT NULL,
   SEQ bigint NOT NULL,
   DOCSU char(1) NOT NULL,
   STNO char(2) NOT NULL,
   CUNM char(56) NOT NULL,
   FRDST char(40) NOT NULL,
   TODST char(40) NOT NULL,
   MAILDST char(50) NOT NULL,
   PHNOW char(15) NOT NULL,
   CRIACAO date NOT NULL,
   EXPIRACAO date NOT NULL,
   LSTMNT char(10) for bit data NOT NULL,
   USPFID char(3) NOT NULL,
   USUARIO char(60) NOT NULL,
   TOTSEL decimal(13,2) NOT NULL,
   VLRIPI decimal(13,2) NOT NULL,
   ICMSUB decimal(13,2) NOT NULL,
   ESTIMADO decimal(13,2) NOT NULL,
   NRETCAT bigint NOT NULL,
   ITENS long varchar NOT NULL
)
;
CREATE UNIQUE INDEX QUOTECRM0L ON QUOTECRM0 ( CUNO, RFDCNO, SEQ )
;

Como a não existe PK, fiz o mapeamento como chave composta:
Classe que representa a chave:

package br.com.pesa.dbs.entidades;

import java.io.Serializable;
import java.math.BigInteger;

import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.persistence.Table;

@Embeddable
public class PorpostaPK implements Serializable{
	
	@Column
	private String CUNO;
	@Column
	private String RFDCNO;
	@Column
	private BigInteger SEQ;
	
	public PorpostaPK(){
		
	}
	
	@Override
    public boolean equals(Object obj) {
        if(!(obj instanceof PorpostaPK)){
        	PorpostaPK porpostaPK = (PorpostaPK) obj;
 
            if(!porpostaPK.getCUNO().equals(CUNO)){
                return false;
            }
 
            if(!porpostaPK.getRFDCNO().equals(RFDCNO)){
                return false;
            }
            if(!porpostaPK.getSEQ().equals(SEQ)){
                return false;
            }
 
            return true;
        }
 
        return false;
    }
 
    @Override
    public int hashCode() {
        return CUNO.hashCode() + RFDCNO.hashCode() +SEQ.hashCode();
    }

	public String getCUNO() {
		return CUNO;
	}

	public void setCUNO(String cUNO) {
		CUNO = cUNO;
	}

	public String getRFDCNO() {
		return RFDCNO;
	}

	public void setRFDCNO(String rFDCNO) {
		RFDCNO = rFDCNO;
	}

	public BigInteger getSEQ() {
		return SEQ;
	}

	public void setSEQ(BigInteger sEQ) {
		SEQ = sEQ;
	}    

}

Mapeando a tabela: (com a query)


import java.io.Serializable;
import java.math.BigInteger;

import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;


@Entity
@Table(name = "quotecrm0", schema = "pesa200arq")
@NamedQueries({ 
	@NamedQuery(name = "Proposta.findProposta", query = "Select Pro.cunm from Proposta as Pro")})
public class Proposta implements Serializable{
	
	/**
	 * 
	 */

	@EmbeddedId
	private PorpostaPK porpostaPK;
	
	
	@Column(name = "STNO")
	private String stno;
	
	@Column(name = "CUNM")
	private String cunm;

	public PorpostaPK getPorpostaPK() {
		return porpostaPK;
	}

	public void setPorpostaPK(PorpostaPK porpostaPK) {
		this.porpostaPK = porpostaPK;
	}

	public String getStno() {
		return stno;
	}

	public void setStno(String stno) {
		this.stno = stno;
	}

	public String getCunm() {
		return cunm;
	}

	public void setCunm(String cunm) {
		this.cunm = cunm;
	}

	

}

Veja como ficou o Data Source: db2-400-ds.xml


<?xml version="1.0" encoding="UTF-8"?>

<!-- ===================================================================== -->
<!--                                                                       -->
<!--  JBoss Server Configuration                                           -->
<!--                                                                       -->
<!-- ===================================================================== -->

<!-- $Id: db2-400-ds.xml 71535 2008-04-01 07:05:03Z adrian@jboss.org $ -->

<!-- You need the jt400.jar that is delivered with IBM iSeries Access or the
     OpenSource Project jtopen.

     [systemname] Hostame of the iSeries
     [schema]     Default schema is needed so jboss could use metadat to test if the tables exists
  -->

<datasources>
  <local-tx-datasource>
    <jndi-name>DB2400</jndi-name>
    <connection-url>jdbc:as400://192.168.1.1;extended dynamic=true;package=jbpkg;package cache=true;package library=jboss;errors=full</connection-url>
    <driver-class>com.ibm.as400.access.AS400JDBCDriver</driver-class>
    <user-name>XXXX</user-name>
    <password>XXXXXX</password>
    <min-pool-size>1</min-pool-size>
        <!-- sql to call when connection is created
        <new-connection-sql>some arbitrary sql</new-connection-sql>
        -->

        <!-- sql to call on an existing pooled connection when it is obtained from pool 
        <check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql>
        -->
      <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
      <metadata>
         <type-mapping>DB2/400</type-mapping>
      </metadata>

  </local-tx-datasource>

</datasources>

E o 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="DB2400DbsPesa" transaction-type="JTA">
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<jta-data-source>java:DB2400</jta-data-source>
		<class>br.com.pesa.dbs.entidades.Proposta</class>			
		<exclude-unlisted-classes>true</exclude-unlisted-classes>
		<properties>
			<property name="hibernate.show_sql" value="false" />
			<property name="hibernate.dialect" value="org.hibernate.dialect.DB2400Dialect" />
			<property name="hibernate.validator.autoregister_listeners" value="false" />
			<property name="hibernate.validator.apply_to_ddl" value="false" />
			<property name="hibernate.default_batch_fetch_size" value="50" />
		</properties>
	</persistence-unit>
	
</persistence>

Agora Instancio meu EJB e chamo a query:


import java.util.List;

import javax.annotation.Resource;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.ejb.TransactionManagement;
import javax.ejb.TransactionManagementType;
import javax.persistence.PersistenceException;
import javax.transaction.UserTransaction;

import br.com.pesa.beans.JPA.EntityRepositoryDBSPesaLocal;
import br.com.pesa.dbs.entidades.Proposta;

/**
 * Session Bean implementation class PropostasDbs
 */
@Stateless(name = PropostasDbsLocal.EJB_NAME)
@TransactionManagement(TransactionManagementType.BEAN)
public class PropostasDbsBeans implements PropostasDbsLocal {

	@EJB(name = EntityRepositoryDBSPesaLocal.EJB_NAME)
	public static EntityRepositoryDBSPesaLocal entityRepositoryBeanDBS;
	
	@Resource
	private UserTransaction userTransaction;
    
    public void testaJPA() throws Exception {
    	//Teste conexão hibernate
    			Proposta proposta = new Proposta();
    	        try{
    	        	
    			  	List<Proposta> propostas =  getEntityRepositoryBeanDBS().findByNamedQuery("Proposta.findProposta"); //.findByNamedQuery("Proposta.findProposta");
    					
    	        } catch (Exception e) {
    				throw new Exception("Erro consulta: " + e.getMessage());
    			}
    }
    
	public static EntityRepositoryDBSPesaLocal getEntityRepositoryBeanDBS() {
		return entityRepositoryBeanDBS;
	}
	
	public UserTransaction getUserTransaction() {
		return userTransaction;
	}

}

Neste ponto sempre cai no catch e retorna a mensagem de nulll, revisei diversas vezes o código, os pom.xml do mavem e estão ok com as bibliotecas…

Veja o Local do bean:

package br.com.pesa.integrador.beans.dbs;
import javax.ejb.Local;

@Local
public interface PropostasDbsLocal {
	
	public static final String EJB_NAME = "propostasDbsBeans";
	
	 public void testaJPA() throws Exception;

}

Aqui esta minha pelaja que estame tirando um bom tempo, alguém passou por algo parecido?

Obrigado!!

Poste a mensagem de erro, pelo menos umas 10 linhas.

Vlw!

Veja o erro:

[code]
INFO: Initiating Jersey application, version 'Jersey: 1.8 06/24/2011 12:17 PM’
16:18:48,346 INFO [EARDeployer] Started J2EE application: file:/C:/jboss-4.2.3.GA/server/default/deploy/IntegradorPESA.ear/
16:18:48,421 INFO [Http11Protocol] Starting Coyote HTTP/1.1 on http-127.0.0.1-8080
16:18:48,452 INFO [AjpProtocol] Starting Coyote AJP/1.3 on ajp-127.0.0.1-8009
16:18:48,470 INFO [Server] JBoss (MX MicroKernel) [4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181417)] Started in 16s:509ms
16:18:50,105 INFO [PESALogger]
16:18:50,106 INFO [PESALogger] ------------------ Iniciando task ‘ImportOrder’ --------------------
16:18:50,106 INFO [PESALogger]
16:18:51,637 WARN [HttpMethodBase] Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended.
16:18:52,153 INFO [STDOUT] proposta 140K Campo Mourão
16:18:52,153 INFO [STDOUT] 140K CAMPUSMORÃO
16:18:52,153 INFO [STDOUT] 120K CAMPUSMORÃO
16:18:52,153 INFO [STDOUT] 416E # 31 PM CAMPO MOURÃO
16:18:52,153 INFO [STDOUT] TESTE WIKI
16:18:59,979 ERROR [PESALogger] Erro consulta: null
16:19:00,306 INFO [PESALogger]
16:19:05,660 INFO [PESALogger] ----------------Finalizando task ‘ImportaPedidoZoho’------------------
[/quote]

Apenas o null é capturado na exceção

Senhores, encontramos o problema, era um bean EJB que estava sendo instanciado oa invés de ser injetado…fica a lição!!

Obrigado!!