Erro na Consulta - Hibernate - Chave Estrangeira [RESOLVIDO]

1 resposta
F

Boa tarde,

Estou tendo um problema no metodo para consultar os dados na base.
Somente na tabela que possui chave estrangeira.
Até quando eu faço aquele "Executar consulta HQL" da erro..
Alguém pode me ajudar?

POJO:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.rme.entity;

import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;

/**
 *
 * @author Allan Furlani
 */
@Entity
@Table(name = "farmaceutico", catalog = "jsf", schema = "")

@NamedQueries({
    @NamedQuery(name = "Farmaceutico.findAll", query = "SELECT f FROM Farmaceutico f"),
    @NamedQuery(name = "Farmaceutico.findByCodFarmaceutico", query = "SELECT f FROM Farmaceutico f WHERE f.codFarmaceutico = :codFarmaceutico"),
    @NamedQuery(name = "Farmaceutico.findByCpfFarmaceutico", query = "SELECT f FROM Farmaceutico f WHERE f.cpfFarmaceutico = :cpfFarmaceutico"),
    @NamedQuery(name = "Farmaceutico.findByNomeFarmaceutico", query = "SELECT f FROM Farmaceutico f WHERE f.nomeFarmaceutico = :nomeFarmaceutico"),
    @NamedQuery(name = "Farmaceutico.findByStatusFarmaceutico", query = "SELECT f FROM Farmaceutico f WHERE f.statusFarmaceutico = :statusFarmaceutico"),
    @NamedQuery(name = "Farmaceutico.findBySenhaFarmaceutico", query = "SELECT f FROM Farmaceutico f WHERE f.senhaFarmaceutico = :senhaFarmaceutico"),
    @NamedQuery(name = "Farmaceutico.findByLoginFarmaceutico", query = "SELECT f FROM Farmaceutico f WHERE f.loginFarmaceutico = :loginFarmaceutico")})

public class Farmaceutico implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "cod_farmaceutico", nullable = false)
    private Integer codFarmaceutico;
    @Column(name = "cpf_farmaceutico", length = 14)
    private String cpfFarmaceutico;
    @Column(name = "nome_farmaceutico", length = 50)
    private String nomeFarmaceutico;
    @Column(name = "status_farmaceutico")
    private Integer statusFarmaceutico;
    @Column(name = "senha_farmaceutico", length = 8)
    private String senhaFarmaceutico;
    @Column(name = "login_farmaceutico", length = 20)
    private String loginFarmaceutico;
    @JoinColumn(name = "cod_farmacia", referencedColumnName = "cod_farmacia")
    @ManyToOne
    private Farmacia codFarmacia;
    @JoinColumn(name = "cod_cargo", referencedColumnName = "cod_cargo")
    @ManyToOne
    private Cargo codCargo;

    public Farmaceutico() {
    }

    public Farmaceutico(Integer codFarmaceutico) {
        this.codFarmaceutico = codFarmaceutico;
    }

    public Integer getCodFarmaceutico() {
        return codFarmaceutico;
    }

    public void setCodFarmaceutico(Integer codFarmaceutico) {
        this.codFarmaceutico = codFarmaceutico;
    }

    public String getCpfFarmaceutico() {
        return cpfFarmaceutico;
    }

    public void setCpfFarmaceutico(String cpfFarmaceutico) {
        this.cpfFarmaceutico = cpfFarmaceutico;
    }

    public String getNomeFarmaceutico() {
        return nomeFarmaceutico;
    }

    public void setNomeFarmaceutico(String nomeFarmaceutico) {
        this.nomeFarmaceutico = nomeFarmaceutico;
    }

    public Integer getStatusFarmaceutico() {
        return statusFarmaceutico;
    }

    public void setStatusFarmaceutico(Integer statusFarmaceutico) {
        this.statusFarmaceutico = statusFarmaceutico;
    }

    public String getSenhaFarmaceutico() {
        return senhaFarmaceutico;
    }

    public void setSenhaFarmaceutico(String senhaFarmaceutico) {
        this.senhaFarmaceutico = senhaFarmaceutico;
    }

    public String getLoginFarmaceutico() {
        return loginFarmaceutico;
    }

    public void setLoginFarmaceutico(String loginFarmaceutico) {
        this.loginFarmaceutico = loginFarmaceutico;
    }

    public Farmacia getCodFarmacia() {
        return codFarmacia;
    }

    public void setCodFarmacia(Farmacia codFarmacia) {
        this.codFarmacia = codFarmacia;
    }

    public Cargo getCodCargo() {
        return codCargo;
    }

    public void setCodCargo(Cargo codCargo) {
        this.codCargo = codCargo;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (codFarmaceutico != null ? codFarmaceutico.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Farmaceutico)) {
            return false;
        }
        Farmaceutico other = (Farmaceutico) object;
        if ((this.codFarmaceutico == null && other.codFarmaceutico != null) || (this.codFarmaceutico != null && !this.codFarmaceutico.equals(other.codFarmaceutico))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "br.com.rme.entity.Farmaceutico[codFarmaceutico=" + codFarmaceutico + "]";
    }

}
Método:
public void consultaFarmaceutico(String sql){
           try{
               Session session = HibernateUtil.getSessionFactory().openSession();
               session.beginTransaction();
               Query q = session.createQuery(sql);
               List resultList = q.list();
               displayResult(resultList);
               session.getTransaction().commit();
               session.close();

           }catch(HibernateException he){
               he.printStackTrace();
           }
     }

Erro:

Hibernate: select farmaceuti0_.cod_farmaceutico as cod1_1_, farmaceuti0_.cpf_farmaceutico as cpf2_1_, farmaceuti0_.nome_farmaceutico as nome3_1_, farmaceuti0_.status_farmaceutico as status4_1_, farmaceuti0_.senha_farmaceutico as senha5_1_, farmaceuti0_.cod_farmacia as cod6_1_, farmaceuti0_.cod_cargo as cod7_1_, farmaceuti0_.login_farmaceutico as login8_1_ from jsf.farmaceutico farmaceuti0_ where (nome_farmaceutico like '%') and (cpf_farmaceutico like '%')
12/08/2011 15:50:57 org.hibernate.property.BasicPropertyAccessor$BasicSetter set
SEVERE: IllegalArgumentException in class: br.com.rme.entity.Farmaceutico, setter method of property: codFarmacia
12/08/2011 15:50:57 org.hibernate.property.BasicPropertyAccessor$BasicSetter set
SEVERE: expected type: br.com.rme.entity.Farmacia, actual value: java.lang.Integer
org.hibernate.PropertyAccessException: IllegalArgumentException occurred while calling setter of br.com.rme.entity.Farmaceutico.codFarmacia
        at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:104)
        at org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropertyValues(AbstractEntityTuplizer.java:337)
        at org.hibernate.tuple.entity.PojoEntityTuplizer.setPropertyValues(PojoEntityTuplizer.java:200)
        at org.hibernate.persister.entity.AbstractEntityPersister.setPropertyValues(AbstractEntityPersister.java:3566)
        at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:129)
        at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:854)
        at org.hibernate.loader.Loader.doQuery(Loader.java:729)
        at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
        at org.hibernate.loader.Loader.doList(Loader.java:2220)
        at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
        at org.hibernate.loader.Loader.list(Loader.java:2099)
        at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)
        at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
        at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
        at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
        at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
        at br.com.rme.ui.CadastrarFarmaceutico.consultaFarmaceutico(CadastrarFarmaceutico.java:523)
        at br.com.rme.ui.CadastrarFarmaceutico.pesquisaFarmaceutico(CadastrarFarmaceutico.java:490)
        at br.com.rme.ui.CadastrarFarmaceutico.btnPdesquisarActionPerformed(CadastrarFarmaceutico.java:462)
        at br.com.rme.ui.CadastrarFarmaceutico.access$000(CadastrarFarmaceutico.java:35)
        at br.com.rme.ui.CadastrarFarmaceutico$3.actionPerformed(CadastrarFarmaceutico.java:381)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.Component.processMouseEvent(Component.java:6263)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6028)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2478)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.lang.IllegalArgumentException: argument type mismatch
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:42)
        ... 45 more

1 Resposta

F

Falha minha…

-.-

Eu cadastrei uns dados na unha na base de dados e adivinhaaa???

os dados cadastrados na chave estrangeira não tinha na chave primária…

Ou seja…

Falta de atenção mesmo…

Vlw!!

Criado 12 de agosto de 2011
Ultima resposta 12 de ago. de 2011
Respostas 1
Participantes 1