Problem with JPQL using JSF

Asked

Viewed 133 times

0

I’m following a book Java EE 7 with JSF, Primefaces and CDI by Thiago Farias.

In my persistence.xml, following the book, I have only the definition of my datasource, follows:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" 
                           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                           xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">

    <persistence-unit name="GescorpPU">
    <provider>org.hibernate.ejb.HibernatePersistence</provider> 
    <properties> 
        <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/gescorpbd" /> 
        <property name="javax.persistence.jdbc.user" value="root" /> 
        <property name="javax.persistence.jdbc.password" value="root" /> 
        <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" /> 
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" /> 
        <property name="hibernate.show_sql" value="true" /> 
        <property name="hibernate.format_sql" value="true" /> 
        <property name="hibernate.hbm2ddl.auto" value="update" /> 
    </properties> 
    </persistence-unit>
</persistence>

Entidade Lancamento:

package br.com.freela.gescorp.model;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

    @Entity
    @Table(name = "lancamento")
    public class Lancamento implements Serializable {

        private static final long serialVersionUID = 1L;

        private Long id;
        private Pessoa pessoa;
        private String descricao;
        private BigDecimal valor;
        private TipoLancamento tipo;
        private Date dataVencimento;
        private Date dataPagamento;

        // ...
    }

Method of consulting the bank:

public List<Lancamento> todos(){
    TypedQuery<Lancamento> query = manager.createQuery("from Lancamento", Lancamento.class);
    return query.getResultList();
}

Exception:

 javax.faces.el.EvaluationException: java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: Lancamento is not mapped [from Lancamento]
        at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:101)
        at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
        at javax.faces.component.UIViewAction.broadcast(UIViewAction.java:562)
        at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
        at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
        at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
        at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
        at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:654)
        at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:86)
        at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
        at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
        at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)
        at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
        at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
        at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58)
        at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:72)
        at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
        at io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:282)
        at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:261)
        at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:80)
        at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:172)
        at io.undertow.server.Connectors.executeRootHandler(Connectors.java:199)
        at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:774)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
    Caused by: java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: Lancamento is not mapped [from Lancamento]
        at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1750)
        at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1677)
        at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1683)
        at org.hibernate.jpa.spi.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:350)
        at br.com.freela.gescorp.repository.Lancamentos.todos(Lancamentos.java:22)
        at br.com.freela.gescorp.controller.ConsultaLancamentosBean.consultar(ConsultaLancamentosBean.java:25)
        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:497)
        at com.sun.el.parser.AstValue.invoke(AstValue.java:292)
        at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:304)
        at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40)
        at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
        at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40)
        at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
        at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
        at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
        ... 35 more
  • Could someone help?

  • Luiz, by the "Lancamento is not Mapped" exception log, it seems that you forgot to declare your entity in persistence.xml.

  • How is your entity Lancamento? Is noted as @Entity? Another thing: depending on the case you are not need to declare each entity in the persistence.xml if both XML and entity(s) (s) are in the same classes classpath. Include more information about your project.

  • Well come on, my entity Lancamento is already noted. I will edit my question..

  • Staff edited the question with more information, as I know that my persistence is in the same classpath of entities?

  • Guys I decided to put the <class> in the persistence.xml but I would like to know how I do not need to do these mapping. So with @Bruno César reported, including in the same classpath. Att.

  • The same classpath would be to have the classes annotated and the persistence,xml inside the same src. Because in some cases, the annotated classes could be in a . jar, in which case they would not be inside src.

Show 2 more comments

1 answer

0

the mapping is correct, so must be missing the definition of the class in the persistence.xml, an alternative, is to enable automatic detection, where JPA will fetch the project classes annotated with @Entity, to do so, simply include the <property name="hibernate.archive.autodetection" value="class, hbm" /> as you can see in the example below:

<properties>
    <property name="hibernate.archive.autodetection" value="class, hbm" />
    <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" /> 
    <property name="hibernate.hbm2ddl.auto" value="update" />
    <property name="hibernate.show_sql" value="false" />
</properties>

Browser other questions tagged

You are not signed in. Login or sign up in order to post.