Problemas com consultas utilizando o hibernate

14 respostas
V

Pessoal estou usando hibernate e spring para persistencia de dandos to tentando realizar essa consulta entrentando o sistema tá retornando nullpointer direto na linha em que está marcada no código ServicoUsuario já tentei fazer vários testes e mechi em muitos pontos da aplicação, mas não consegui solucionar o problema. Vou postar aqui as informações que acho q são relevantes para vocês me ajudarem pessoal agradeço muito ajuda desde de já.

UsuarioDAO

private HibernateTemplate hibernateTemplate;

@Autowired
	public void setHibernateTemplate(HibernateTemplate hibernateTemplate){
		
		this.hibernateTemplate=hibernateTemplate;
		
	}

public Usuario consultar(String cpfMatriculam, String privilegio){

            Administrador adm=new Administrador();

			DetachedCriteria criteria=DetachedCriteria.forClass(Usuario.class);
			
			criteria.add(Restrictions.eq("cpfMatricula", cpfMatricula));
			criteria.add(Restrictions.eq("status", true));
			criteria.add(Restrictions.eq("privilegio", privilegio));
			
>>>			adm= DataAccessUtils.uniqueResult(hibernateTemplate.findByCriteria(criteria));

    return adm;
			
}

public static void main(String []args){

	ServicoUtil sv=new ServicoUtil();
	
	sv.consultar("[telefone removido]", "adm");
	
	
}

ApplicationContext

<?xml  version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:flex="http://www.springframework.org/schema/flex"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                           http://www.springframework.org/schema/context
                           http://www.springframework.org/schema/context/spring-context.xsd
                           http://www.springframework.org/schema/flex
                           http://www.springframework.org/schema/flex/spring-flex-1.0.xsd">
 
	<!-- Cria o MessageBroker com as configurações padrão -->
	<flex:message-broker />
 
	<!-- Habilita a injeção de dependência através de anotações -->
	<context:annotation-config />
 
	<!-- Faz com que os Services sejam beans gerenciados pelo container do Spring -->
	<context:component-scan base-package="br.com.simuladoOnline.servico"/>
	
	<!-- Faz com que os DAOs sejam beans gerenciados pelo container do Spring -->
	<context:component-scan base-package="br.com.simuladoOnline.persistencia" />
	
	<!-- DataSource -->
	<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName">
			<value>org.postgresql.Driver</value>
		</property>
 
		<property name="url">
			<value>jdbc:postgresql://192.168.254.120:5432/simuladoOnline</value>
		</property>
 
		<property name="username">
			<value>postgres</value>
		</property>
 
		<property name="password">
			<value>9!3$302302</value>
		</property>
	</bean>
 
	<!-- Hibernate SessionFactory -->
	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
 
		<property name="dataSource">
			<ref local="dataSource" />
		</property>
 
		<!-- Carrega todos os Beans -->
		<property name="packagesToScan">
			<list>
				<value>br.com.simuladoOnline.negocio.entidades</value>
			</list>
		</property>
 
		<!-- Propriedades do Hibernate -->
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>
				<prop key="hibernate.hbm2ddl.auto">update</prop>
				<prop key="hibernate.show_sql">true</prop>
				<prop key="hibernate.format_sql">true</prop>
			</props>
		</property>
	</bean>
	
 
</beans>

14 Respostas

drsmachado

Onde?

V

Na linha 20 do servicoUsuario no método consultar foi mal esqueci de marcar.

V

ninguém sabe oq poderia ser esse problema não galera??

drsmachado

Quando debuga, qual dos objetos está nulo?

V

Hibernate template tá aparecendo como null…

V

??

drsmachado

O Spring não está injetando ele.
Como está o mapeamento para esta classe, como bean do Spring?

drsmachado

Camarada, ninguém aqui tem obrigação de responder.
Se você tem pressa, pesquise, vá atrás de livros, tutoriais, fóruns internacionais.
Cada um tem suas responsabilidades e prioridades.
Postou, aguarde (de preferência pesquisando a solução) que as respostas virão.
Este tipo de coisa não ajuda em nada, pelo contrário, afasta possíveis foristas interessados em ajudar.

V

Bom não foi essa a minha intenção, respondendo a pergunta no meu applicationContext os meu beans estão sendo carregados todos de uma vez quer dizer pelo menos eu acho que estão segundo o tutorial que segui.

tá assim

<!-- Carrega todos os Beans -->
		<property name="packagesToScan">
			<list>
				<value>br.com.simuladoOnline.negocio.entidades</value>
			</list>
		</property>
V

Minha classe administrador tá assim.

@Entity
@Table(name = "Administrador")
public class Administrador extends Usuario {

	public Administrador(String nome,String cpf, String senha, String privilegio,boolean status,String email) {
		super(nome,cpf, senha, privilegio,status,email);
	}

	public Administrador() {

	}
}
drsmachado

O problema está aqui:

@Autowired  
    public void setHibernateTemplate(HibernateTemplate hibernateTemplate){  
          
        this.hibernateTemplate=hibernateTemplate;  
          
    }

Você deve passar, como parâmetro, um sessionFactory e não um HibernateTemplate.

@Autowired
20	    public void setSessionFactory(SessionFactory sessionFactory) {
21	        hibernateTemplate = new HibernateTemplate(sessionFactory);
22	    }

Digo isto conforme o que está aqui

V

Caramba continuo na mesma dando o mesmo erro cara você têm mais alguma sugestão to achando que o erro é nesse meu applicationContext deve tá faltando alguma configuração porque continua nesse nullpointer do hibernateTemplate.

drsmachado

Posta as classes UsuarioDAO e UsuarioService

V

Eu alterei a classe para administrador segue abaixo. Eu acho que é isso que você quer. Mas uma vez brigadão pela ajuda cara.

@Entity
@Table(name = "Administrador")
public class Administrador extends Usuario {

	public Administrador(String nome,String cpf, String senha, String privilegio,boolean status,String email) {
		super(nome,cpf, senha, privilegio,status,email);
	}

	public Administrador() {

	}
}
@Repository
public class RepositorioAdministrador implements IrepositorioAdministrador {

	private HibernateTemplate hibernateTemplate;

	
	@Autowired
	public void setHibernateTemplate(SessionFactory sessionFactory){
		
		hibernateTemplate=new HibernateTemplate(sessionFactory);
		
	}


	@SuppressWarnings("unchecked")
	public boolean existe(String cpf) {

		boolean resposta = false;
		Administrador administrador;
		
		DetachedCriteria criteria=DetachedCriteria.forClass(Administrador.class);
		
		criteria.add(Restrictions.eq("cpfMatricula", cpf));
		criteria.add(Restrictions.eq("status", true));
	
		administrador = DataAccessUtils.uniqueResult(hibernateTemplate.findByCriteria(criteria));


		if (administrador != null) {

			if (administrador.getCpfMatricula().equals(cpf)) {

				resposta = true;

			}
		}

		return resposta;
	}
Criado 23 de abril de 2012
Ultima resposta 23 de abr. de 2012
Respostas 14
Participantes 2