@Gabrielfp escreveu:
Bom, estou enfrentando um problema com uma namedQuery que fiz, toda vez que faço uma pesquisa no campo de texto retorna QueryException.
A Stacktrace completa:
Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1774) at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1657) at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86) at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238) at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191) at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59) at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58) at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74) at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54) at javafx.event.Event.fireEvent(Event.java:198) at javafx.scene.Scene$KeyHandler.process(Scene.java:3964) at javafx.scene.Scene$KeyHandler.access$1800(Scene.java:3910) at javafx.scene.Scene.impl_processKeyEvent(Scene.java:2040) at javafx.scene.Scene$ScenePeerListener.keyEvent(Scene.java:2501) at com.sun.javafx.tk.quantum.GlassViewEventHandler$KeyEventNotification.run(GlassViewEventHandler.java:217) at com.sun.javafx.tk.quantum.GlassViewEventHandler$KeyEventNotification.run(GlassViewEventHandler.java:149) at java.security.AccessController.doPrivileged(Native Method) at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleKeyEvent$353(GlassViewEventHandler.java:248) at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:389) at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleKeyEvent(GlassViewEventHandler.java:247) at com.sun.glass.ui.View.handleKeyEvent(View.java:546) at com.sun.glass.ui.View.notifyKey(View.java:966) at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71) at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275) at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1769) ... 31 more Caused by: java.lang.IllegalArgumentException: org.hibernate.QueryException: could not instantiate class [com.devgbr.model.entity.Paciente] from tuple at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1750) at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1677) at org.hibernate.jpa.internal.QueryImpl.getResultList(QueryImpl.java:458) at com.devgbr.model.dao.PacienteDAO.getByName(PacienteDAO.java:48) at com.devgbr.controller.Frm4PacientesController.handlePesquisar(Frm4PacientesController.java:170) ... 41 more Caused by: org.hibernate.QueryException: could not instantiate class [com.devgbr.model.entity.Paciente] from tuple at org.hibernate.transform.AliasToBeanConstructorResultTransformer.transformTuple(AliasToBeanConstructorResultTransformer.java:58) at org.hibernate.hql.internal.HolderInstantiator.instantiate(HolderInstantiator.java:95) at org.hibernate.loader.hql.QueryLoader.getResultList(QueryLoader.java:464) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2367) at org.hibernate.loader.Loader.list(Loader.java:2362) at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:496) at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:387) at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:229) at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1260) at org.hibernate.internal.QueryImpl.list(QueryImpl.java:103) at org.hibernate.jpa.internal.QueryImpl.list(QueryImpl.java:573) at org.hibernate.jpa.internal.QueryImpl.getResultList(QueryImpl.java:449) ... 43 more Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.hibernate.transform.AliasToBeanConstructorResultTransformer.transformTuple(AliasToBeanConstructorResultTransformer.java:55) ... 54 more Caused by: java.lang.NullPointerException at com.devgbr.model.entity.Paciente.<init>(Paciente.java:179) ... 59 more
Minha classe:
package com.devgbr.model.entity; import java.io.Serializable; import java.util.Date; import java.util.List; import javax.persistence.Basic; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.Lob; import javax.persistence.ManyToMany; import javax.persistence.ManyToOne; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; /** * * @author GbrDEV */ @Entity @Table(name = "tbpaciente") @XmlRootElement @NamedQueries({ @NamedQuery(name = "Paciente.findAll", query = "SELECT p FROM Paciente p") , @NamedQuery(name = "Paciente.findById", query = "SELECT p FROM Paciente p WHERE p.id = :id") , @NamedQuery(name = "Paciente.findByNomecivil", query = "SELECT p FROM Paciente p WHERE p.nomecivil = :nomecivil") , @NamedQuery(name = "Paciente.findByNome", query = "SELECT new com.devgbr.model.entity.Paciente(p.id, p.cns, p.nomecivil, p.nomesocial, p.sexo, p.raca, p.datanasc, p.cpf, p.rg, p.orgemissor, p.email, p.telefone, p.celular, p.mae, p.pai, c.nome, pl.nome, p.matricula, p.validade, p.indeterminado, a.nome, p.observacoes) " + "FROM " + "Paciente p " + "LEFT OUTER JOIN p.convenio c " + "LEFT OUTER JOIN p.plano pl " + "LEFT OUTER JOIN p.acomodacao a " + "WHERE p.nomecivil LIKE :paciente") , @NamedQuery(name = "Paciente.findByNomesocial", query = "SELECT p FROM Paciente p WHERE p.nomesocial = :nomesocial") , @NamedQuery(name = "Paciente.findByCns", query = "SELECT p FROM Paciente p WHERE p.cns = :cns") , @NamedQuery(name = "Paciente.findBySexo", query = "SELECT p FROM Paciente p WHERE p.sexo = :sexo") , @NamedQuery(name = "Paciente.findByRaca", query = "SELECT p FROM Paciente p WHERE p.raca = :raca") , @NamedQuery(name = "Paciente.findByDatanasc", query = "SELECT p FROM Paciente p WHERE p.datanasc = :datanasc") , @NamedQuery(name = "Paciente.findByCpf", query = "SELECT p FROM Paciente p WHERE p.cpf = :cpf") , @NamedQuery(name = "Paciente.findByRg", query = "SELECT p FROM Paciente p WHERE p.rg = :rg") , @NamedQuery(name = "Paciente.findByOrgemissor", query = "SELECT p FROM Paciente p WHERE p.orgemissor = :orgemissor") , @NamedQuery(name = "Paciente.findByEmail", query = "SELECT p FROM Paciente p WHERE p.email = :email") , @NamedQuery(name = "Paciente.findByTelefone", query = "SELECT p FROM Paciente p WHERE p.telefone = :telefone") , @NamedQuery(name = "Paciente.findByCelular", query = "SELECT p FROM Paciente p WHERE p.celular = :celular") , @NamedQuery(name = "Paciente.findByMae", query = "SELECT p FROM Paciente p WHERE p.mae = :mae") , @NamedQuery(name = "Paciente.findByPai", query = "SELECT p FROM Paciente p WHERE p.pai = :pai") , @NamedQuery(name = "Paciente.findByMatricula", query = "SELECT p FROM Paciente p WHERE p.matricula = :matricula") , @NamedQuery(name = "Paciente.findByValidade", query = "SELECT p FROM Paciente p WHERE p.validade = :validade") , @NamedQuery(name = "Paciente.findByIndeterminado", query = "SELECT p FROM Paciente p WHERE p.indeterminado = :indeterminado")}) public class Paciente implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Basic(optional = false) @Column(name = "id") private Integer id; @Basic(optional = false) @Column(name = "nomecivil") private String nomecivil; @Column(name = "nomesocial") private String nomesocial; @Column(name = "cns") private String cns; @Column(name = "sexo") private String sexo; @Column(name = "raca") private String raca; @Column(name = "datanasc") @Temporal(TemporalType.DATE) private Date datanasc; @Basic(optional = false) @Column(name = "cpf") private String cpf; @Column(name = "rg") private String rg; @Column(name = "orgemissor") private String orgemissor; @Column(name = "email") private String email; @Column(name = "telefone") private String telefone; @Column(name = "celular") private String celular; @Basic(optional = false) @Column(name = "mae") private String mae; @Column(name = "pai") private String pai; @Column(name = "matricula") private String matricula; @Column(name = "validade") @Temporal(TemporalType.DATE) private Date validade; @Column(name = "indeterminado") private Boolean indeterminado; @Lob @Column(name = "observacoes") private String observacoes; @JoinTable(name = "paciresp", joinColumns = { @JoinColumn(name = "paciente", referencedColumnName = "id")}, inverseJoinColumns = { @JoinColumn(name = "responsavel", referencedColumnName = "id")}) @ManyToMany(fetch = FetchType.LAZY) private List<Responsavel> responsavelList; @OneToMany(cascade = CascadeType.ALL, mappedBy = "paciente", fetch = FetchType.LAZY) private List<Atendimento> atendimentoList; @JoinColumn(name = "acomodacao", referencedColumnName = "id") @ManyToOne(fetch = FetchType.LAZY) private Acomodacao acomodacao; @JoinColumn(name = "convenio", referencedColumnName = "id") @ManyToOne(fetch = FetchType.LAZY) private Convenio convenio; @JoinColumn(name = "plano", referencedColumnName = "id") @ManyToOne(fetch = FetchType.LAZY) private Plano plano; public Paciente() { } public Paciente(Integer id, String cns, String nomecivil, String nomesocial, String sexo, String raca, Date datanasc, String cpf, String rg, String orgemissor, String email, String telefone, String celular, String mae, String pai, Convenio convenio, Plano plano, String matricula, Date validade, Boolean indeterminado, Acomodacao acomodacao, String observacoes) { this.id = id; this.nomecivil = nomecivil; this.nomesocial = nomesocial; this.cns = cns; this.sexo = sexo; this.raca = raca; this.datanasc = datanasc; this.cpf = cpf; this.rg = rg; this.orgemissor = orgemissor; this.email = email; this.telefone = telefone; this.celular = celular; this.mae = mae; this.pai = pai; this.convenio = convenio; this.plano = plano; this.matricula = matricula; this.validade = validade; this.indeterminado = indeterminado; this.acomodacao = acomodacao; this.observacoes = observacoes; } public Paciente(Integer id, String cns, String nomecivil, String nomesocial, String sexo, String raca, Date datanasc, String cpf, String rg, String orgemissor, String email, String telefone, String celular, String mae, String pai, String convenio, String plano, String matricula, Date validade, Boolean indeterminado, String acomodacao, String observacoes) { this.id = id; this.nomecivil = nomecivil; this.nomesocial = nomesocial; this.cns = cns; this.sexo = sexo; this.raca = raca; this.datanasc = datanasc; this.cpf = cpf; this.rg = rg; this.orgemissor = orgemissor; this.email = email; this.telefone = telefone; this.celular = celular; this.mae = mae; this.pai = pai; if (convenio != null) { this.convenio.setNome(convenio); } if (plano != null) { this.plano.setNome(plano); } this.matricula = matricula; this.validade = validade; this.indeterminado = indeterminado; if (acomodacao != null) { this.acomodacao.setNome(acomodacao); } this.observacoes = observacoes; } public Paciente(Integer id) { this.id = id; } public Paciente(Integer id, String nomecivil, String cpf, String mae) { this.id = id; this.nomecivil = nomecivil; this.cpf = cpf; this.mae = mae; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getNomecivil() { return nomecivil; } public void setNomecivil(String nomecivil) { this.nomecivil = nomecivil; } public String getNomesocial() { return nomesocial; } public void setNomesocial(String nomesocial) { this.nomesocial = nomesocial; } public String getCns() { return cns; } public void setCns(String cns) { this.cns = cns; } public String getSexo() { return sexo; } public void setSexo(String sexo) { this.sexo = sexo; } public String getRaca() { return raca; } public void setRaca(String raca) { this.raca = raca; } public Date getDatanasc() { return datanasc; } public void setDatanasc(Date datanasc) { this.datanasc = datanasc; } public String getCpf() { return cpf; } public void setCpf(String cpf) { this.cpf = cpf; } public String getRg() { return rg; } public void setRg(String rg) { this.rg = rg; } public String getOrgemissor() { return orgemissor; } public void setOrgemissor(String orgemissor) { this.orgemissor = orgemissor; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getTelefone() { return telefone; } public void setTelefone(String telefone) { this.telefone = telefone; } public String getCelular() { return celular; } public void setCelular(String celular) { this.celular = celular; } public String getMae() { return mae; } public void setMae(String mae) { this.mae = mae; } public String getPai() { return pai; } public void setPai(String pai) { this.pai = pai; } public String getMatricula() { return matricula; } public void setMatricula(String matricula) { this.matricula = matricula; } public Date getValidade() { return validade; } public void setValidade(Date validade) { this.validade = validade; } public Boolean getIndeterminado() { return indeterminado; } public void setIndeterminado(Boolean indeterminado) { this.indeterminado = indeterminado; } public String getObservacoes() { return observacoes; } public void setObservacoes(String observacoes) { this.observacoes = observacoes; } @XmlTransient public List<Responsavel> getResponsavelList() { return responsavelList; } public void setResponsavelList(List<Responsavel> responsavelList) { this.responsavelList = responsavelList; } @XmlTransient public List<Atendimento> getAtendimentoList() { return atendimentoList; } public void setAtendimentoList(List<Atendimento> atendimentoList) { this.atendimentoList = atendimentoList; } public Acomodacao getAcomodacao() { return acomodacao; } public void setAcomodacao(Acomodacao acomodacao) { this.acomodacao = acomodacao; } public Convenio getConvenio() { return convenio; } public void setConvenio(Convenio convenio) { this.convenio = convenio; } public Plano getPlano() { return plano; } public void setPlano(Plano plano) { this.plano = plano; } @Override public int hashCode() { int hash = 0; hash += (id != null ? id.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 Paciente)) { return false; } Paciente other = (Paciente) object; if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) { return false; } return true; } @Override public String toString() { return "com.devgbr.model.entity.Paciente[ id=" + id + " ]"; } }
Meu método de pesquisa:
public List<Paciente> getByName(String nome) { List<Paciente> paciente = em.createNamedQuery("Paciente.findByNome", Paciente.class) .setParameter("paciente", "%" + nome + "%") .getResultList(); return paciente; }
Qualquer informação a mais que seja necessária é só falar.
Obrigado pela atenção!
Mensagens: 13
Participantes: 5