Olá, Gente! Estou com um probleminha esquisito aqui. Sou nova nessas coisas de annotations, JPA..etc..
Bem é o seguinte:
Tenho já uma estrutura de pacotes e classes que já funcionam com annotations. Vale ressaltar q qm configurou essas coisas foi uma segunda pessoa que não tarabalha mais comigo :D
Só que agora to tendo que usar uma tabela que não necessariamente deveria ser criada uma classe correspondente, mas na minha primeira tentativa de consulta, já deu erro de mapeamento:
[url]18:01:05,850 WARN [InterceptorRegistry] applicable interceptors is non-existent for public java.util.ArrayList br.org.bolsaTrabalho.controller.OfertaController.buscarOfertabyLocalTrabalho(java.lang.String)
18:01:12,789 ERROR [application] javax.ejb.EJBException: java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException: indicefinanceiro is not mapped [select indFin from indicefinanceiro where indFin.titulo like('%Salário Mínimo Federal%')]
javax.faces.el.EvaluationException: javax.ejb.EJBException: java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException: indicefinanceiro is not mapped [select indFin from indicefinanceiro where indFin.titulo like('%Salário Mínimo Federal%')]
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
at javax.faces.component.UICommand.broadcast(UICommand.java:387)
at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:324)
at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:299)
at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:256)
at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:469)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:828)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:601)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
Caused by: javax.ejb.EJBException: java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException: indicefinanceiro is not mapped [select indFin from indicefinanceiro where indFin.titulo like('%Salário Mínimo Federal%')]
at org.jboss.ejb3.tx.Ejb3TxPolicy.handleExceptionInOurTx(Ejb3TxPolicy.java:77)
at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:83)
at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:190)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.security.Ejb3AuthenticationInterceptorv2.invoke(Ejb3AuthenticationInterceptorv2.java:159)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:41)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.BlockContainerShutdownInterceptor.invoke(BlockContainerShutdownInterceptor.java:65)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.aspects.currentinvocation.CurrentInvocationInterceptor.invoke(CurrentInvocationInterceptor.java:67)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
at org.jboss.ejb3.session.SessionSpecContainer.invoke(SessionSpecContainer.java:219)
at org.jboss.ejb3.proxy.handler.ProxyInvocationHandlerBase.invoke(ProxyInvocationHandlerBase.java:261)
at org.jboss.ejb3.proxy.handler.session.SessionSpecProxyInvocationHandlerBase.invoke(SessionSpecProxyInvocationHandlerBase.java:101)
at $Proxy190.verificaSalarioMinimo(Unknown Source)
at br.org.bolsaTrabalho.beans.ManterOfertaBean.incluiOferta(ManterOfertaBean.java:432)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.el.parser.AstValue.invoke(AstValue.java:170)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
at org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
... 36 more
[/url]
Sendo assim, criei uma classe representando a tabela indicefinanceiro, que está da seguinte forma:
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "indicefinanceiro")
public class IndiceFinanceiro {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "idindicefinanceiro")
private Integer idIndiceFinanceiro;
@Column(name = "titulo")
private String tituloIndice;
@Column(name = "data_vigencia_inicial")
private Date dataVigenciaInicial;
@Column(name = "data_vigencia_final")
private Date dataVigenciaFinal;
@Column(name = "valor")
private Integer valorIndice;
public Integer getIdIndiceFinanceiro() {
return idIndiceFinanceiro;
}
public void setIdIndiceFinanceiro(Integer idIndiceFinanceiro) {
this.idIndiceFinanceiro = idIndiceFinanceiro;
}
public String getTituloIndice() {
return tituloIndice;
}
public void setTituloIndice(String tituloIndice) {
this.tituloIndice = tituloIndice;
}
public Date getDataVigenciaInicial() {
return dataVigenciaInicial;
}
public void setDataVigenciaInicial(Date dataVigenciaInicial) {
this.dataVigenciaInicial = dataVigenciaInicial;
}
public Date getDataVigenciaFinal() {
return dataVigenciaFinal;
}
public void setDataVigenciaFinal(Date dataVigenciaFinal) {
this.dataVigenciaFinal = dataVigenciaFinal;
}
public Integer getValorIndice() {
return valorIndice;
}
public void setValorIndice(Integer valorIndice) {
this.valorIndice = valorIndice;
}
}
daí, no DAO onde preciso usá-la, faço o seguinte:
public Boolean verificaSalarioMinimo(Integer jornadaSemanal, Double salario) {
Query query = em
.createQuery("select indFin from indicefinanceiro where indFin.titulo like('%Salário Mínimo Federal%')");
Object obj = query.getSingleResult();
Double salarioMinimoFederal = (Double) obj;
Double salarioMinimoPermitido;
Daí, na hora de debugar, qndo ele chega na consulta, repete o mesmo erro apresentado anteriormente.
Por favor, alguém poderia me ajudar? Na minha visão pobre está mapeado corretamente, mas infelizmente ele diz q não.
To usando Eclipse Galileo, JBoss 5.0 e