Me ajudem please, Hibernate com Spring

Bom dia amigos, amigos estou com um pequeno probleminha a mais de uma semana e não estou achando o erro, eu sei que e uma besteira mais não estou conseguindo enxergar, queria uma ajuda de vcs…

Tenho uma aplicação que utiliza os seguintes frameworks Hibernate,Spring,Struts e Servlet, essa aplicação utiliza três base de dados, preciso acessar uma tabela de uma das base de dados, quem configura os acessos dessas bases são o Spring junto com o Hibernate, fiz i mapeamento com o hibernate e as classes de configuração.

O seguinte erro que o ocorre senhores é:

  java.lang.NullPointerException, quando aplicação acesso o método findByPrimaryKey. Ou seja, ele não está conseguindo trazer informações da base de dados. Então queria que vcs me ajudasse a enxergar esse erro, eu tenho quase certeza que e na configuração com o hibernate e o Spring...

Vou postar os códigos.

                    SPRING

Configuração do application-resources.xml:

<bean id="dataSourceSicap" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="####################3"/>
        <!-- property name="url" value="################"/>
        <property name="username" value="#######"/>
        <property name="password" value="#######"/ -->
        
        <!-- Desenvolvimento -->
        <property name="url" value="###########"/>
        <!-- Homologação -->
        <!-- property name="url" value="#########"/ -->
        
         <property name="username" value="################"/>
         <property name="password" value="################"/>
         
    </bean>

Configuração do application-persistencia.xml:

  <bean id="sessionFactoryServidorSiape" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSourceSicap"/>
        <property name="mappingResources">
            <list>
             	<value>##/##/##/##/model/Rubrica.hbm.xml</value>             	
            </list>
        </property>

        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
            </props>
        </property>
    </bean>


	<bean id="rubricaDao" class="##.##.##.##.dao.RubricaDaoImpl" parent="baseDao">
		<property name="modelClassName" value="##.##.##.##.model.Rubrica" />
		<property name="sessionFactory" ref="sessionFactoryServidorSiape"/>
	</bean>
                                         HIBERNATE

Rubrica.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="##.##.##.##.model">
	<class name="Rubrica" table="#####">
				
		<id name="codigo" type="java.lang.Integer" unsaved-value="null">
			<column name="####" precision="10" scale="0"/>  
		</id>

		<property name="nome" column="##" />
		<property name="siglaAssunto" column="######" />
		
	</class>
</hibernate-mapping>

RubricaDao.java

import java.util.List;

import ##.##.##.##.model.Rubrica;

public interface RubricaDao{ 

	public List<Rubrica> findAll();

	public Rubrica findByPrimaryKey(Integer id);

	public void insert(Rubrica rubrica);

	public void update(Rubrica rubrica);

	public void delete(Rubrica rubrica);
}

RubricaDaoImpl.java


import ##.##.##.##.model.Rubrica;

public class RubricaDaoImpl extends BaseDaoImpl<Rubrica,Integer> implements RubricaDao {
	//TODO
}

RubricaBusinessImpl.java

public String buscaNomeRubrica(Integer codRubrica) {
		// TODO Auto-generated method stub
	
		Rubrica  rubrica = rubricaDao.findByPrimaryKey(codRubrica); // A CHAMADA DESSE CARA QUE DA O ERRO
		String nomeRubrica = rubrica.getNome();
		return nomeRubrica;
	}

ERROOOOOOO

class java.lang.NullPointerException
2011-04-25 08:51:33,340 [http-8080-Processor23] ERROR org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/###].[action].invoke() - 
> Servlet.service() for servlet action threw exception
java.lang.NullPointerException
	at ##.##.##.##.business.RubricaBusinessImpl.buscaNomeRubrica(RubricaBusinessImpl.java:46)

NullPointer eh qdo vc esta tentando receber algo e esse algo naum foi inicializado…deu pra clarear?

Quando você executa o debug, qual valor chega para codRubrica
?public String buscaNomeRubrica(Integer codRubrica) {

A chega o id da rubra que eu quero certinho…

A chega o ID da rubrica que eu quero certinho…

Ok. E rubricaDao foi instanciado na classe em algum lugar? Rubrica rubrica = rubricaDao.findByPrimaryKey(codRubrica);

findByPrimaryKey está caindo na sua implementação?

Sim sim,

public class RubricaBusinessImpl extends BaseBusinessImpl implements RubricaBusiness {
private RubricaDao rubricaDao;


public class RubricaBusinessImpl extends BaseBusinessImpl implements RubricaBusiness {
	private RubricaDao	rubricaDao;
	
	public String buscaNomeRubrica(Integer codRubrica) {

		Rubrica  rubrica = rubricaDao.findByPrimaryKey(codRubrica);
		String nomeRubrica = rubrica.getNome();
		return nomeRubrica;
	}

}

[quote=Rodrigo.Mlechior][code]

public class RubricaBusinessImpl extends BaseBusinessImpl implements RubricaBusiness {
private RubricaDao rubricaDao;

public String buscaNomeRubrica(Integer codRubrica) {

	Rubrica  rubrica = rubricaDao.findByPrimaryKey(codRubrica);
	String nomeRubrica = rubrica.getNome();
	return nomeRubrica;
}

}

[/quote]

private RubricaDao  rubricaDao;  

Você está usando injeção de dependência? Se sim, quem está injetando neste objeto?

Vc tem que dizer para o spring onde ele ira injetara as dependencias das suas classes. Isso pode ser tanto configurado pelo xml ou por anotation.
No caso por anotação ficaria algo ± assim:

@Service
public class RubricaBusinessImpl extends BaseBusinessImpl implements RubricaBusiness {  
     @Autowired
     private RubricaDao  rubricaDao; //Spring ira injetar pelo atributo, + vc pode adicionar no metodo get/set q ele usara a injeção no padrão javabeans.

Resolveu?

Bom dia amigos, desculpa pela ausência ontem, aconteceu uns emprevisto que nao deu para acompanhar,

então, ja existe a configuração do atributo rubricaDao


        <property name="hibernateProperties">
	<bean id="rubricaDao" class="##.##.##.##.dao.RubricaDaoImpl" parent="baseDao">
		<property name="modelClassName" value="##.##.##.##.model.Rubrica" />
		<property name="sessionFactory" ref="sessionFactoryServidorSiape"/>
	</bean>

 

Quando debugo e vou entrar na linha:

Rubrica  rubrica = rubricaDao.findByPrimaryKey(codRubrica);

ocorrer o erro…

Alguem?

Ele chega a executar a consulta e mostrar a SQL no console?

Tenta assim:

 public class RubricaBusinessImpl extends BaseBusinessImpl implements RubricaBusiness {  
@Resource     
private RubricaDao  rubricaDao;

Não, quando chegar na linha :

Rubrica  rubrica = rubricaDao.findByPrimaryKey(codRubrica);

ele da o erro que esta comentado na descição do post…

[quote=raf4ever]Tenta assim:

public class RubricaBusinessImpl extends BaseBusinessImpl implements RubricaBusiness { @Resource private RubricaDao rubricaDao; [/quote]

Vou tentar agora mestre

esta sua classe RubricaBusinessImpl esta sendo gerenciada pelo Spring ?
o spring só injeta as dependências nas classes que ele conhece vc tem que configurar esta classe tb no seu xml, ou via anotation, vc fez isso ?