[RESOLVIDO]javax.persistence.NoResultException: No entity found for query

[b]Boa Noite Pessoal!

Galera estou desenvolvendo um trabalho da faculdade, mas tá dando um pepino atrás do outro, isso porque sou iniciante e nao tenho muita pratica.

A seguinte exeção é disparada:[/b]

Caused by: javax.persistence.NoResultException: No entity found for query at org.hibernate.ejb.QueryImpl.getSingleResult(QueryImpl.java:275) at controllers.VisitanteController.getVisitanteByNome(VisitanteController.java:49) at converters.VisitanteConverter.getAsObject(VisitanteConverter.java:22) at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:167) at com.sun.faces.renderkit.html_basic.MenuRenderer.convertSelectOneValue(MenuRenderer.java:198) at com.sun.faces.renderkit.html_basic.MenuRenderer.getConvertedValue(MenuRenderer.java:315) at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1023) at javax.faces.component.UIInput.validate(UIInput.java:953) at javax.faces.component.UIInput.executeValidate(UIInput.java:1204) at javax.faces.component.UIInput.processValidators(UIInput.java:693) at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1081) at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1081) at javax.faces.component.UIForm.processValidators(UIForm.java:240) at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1081) at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1081) at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1159) at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:72) ... 22 more

[b]O que eu não posso entender é por que ele não acha a entidade na query!

Segue o método descrito na pilha acima:[/b]

public Visitante getVisitanteByNome(String nome) { System.out.println(">> " + nome); Query q = entityManager.createQuery("SELECT tq FROM Visitante tq WHERE tq.nome = :nome"); q.setParameter("nome", nome); return (Visitante) q.getSingleResult(); }

Esse metodo é utilizado por um converter:

@Override public Object getAsObject(FacesContext context, UIComponent component, String value) { Visitante visitante; if(value.equals("0")){ visitante = new Visitante(); }else{ // will throw new IllegalArgumentException if it can't parse. System.out.println(">> getAsObject(): " + value); VisitanteController visitanteController = new VisitanteController(); visitante = visitanteController.getVisitanteByNome(value); } // return c; return visitante; }

Será que alguém pode me dar um help para solucionar essa zica?

Grato a todos

Como voce mapeou objeto Visitante?

Olá YvGa!

Desculpa a ignorância, mas não entendi o que você quis dizer…

Você diz na entidade?

Pessoal, parece que eu consegui tratar o problema com uma dica que um amigo nosso postou aqui:

http://www.guj.com.br/java/105644-namedquery—no-entity-found-for-query

Mas, agora apareceu outro problema infernal:

Caused by: javax.el.PropertyNotFoundException: /index.xhtml @243,86 value="#{hotelManagedBean.selectedVisitante}": Property 'selectedVisitante' not writable on type entidades.Visitante at com.sun.faces.facelets.el.TagValueExpression.setValue(TagValueExpression.java:130) at javax.faces.component.UIInput.updateModel(UIInput.java:813) ... 30 more

Tenho vários métodos seguindo esse mesmo modelo

Agora só Jesus sabe por qual motivo deu pepino logo nesse!

Obrigado pela atenção pessoal

HotelManagedBean possui um setter para a propriedade selectedVisitante?

Olá Leonardo Gaona, bom dia!

Consegui resolver o problema. Na verdade eu estava setando o value de uma combo-box em um objeto errado.

Obrigado pela resposta!