hibernate: Unable to locate appropriate constructor on class - HQL

Lipo

When I trying to execute this HQL to return an object Ponto I receive this error:

ERROR [org.hibernate.hql.PARSER] (http-localhost-127.0.0.1-8080-2) Unable to locate appropriate constructor on class [br.com.cdv.model.entity.Ponto] [cause=org.hibernate.PropertyNotFoundException: no appropriate constructor in class: br.com.cdv.model.entity.Ponto]

DAO

    @SuppressWarnings("unchecked")
    @Override
    public List<Ponto> listLoja(Integer idLoja) {

        Query q = getSession().createQuery("select new Ponto(0,ss.cliente,ss.loja,null,null,null,null,null,sum(qtdPontos),'',0) "
            + "from Ponto as ss where ss.loja.id = :idLoja "
            + "group by ss.cliente, ss.loja");  

        q.setParameter("idLoja", idLoja);

        return (List<Ponto>) q.list();
    }  

My Entity / Class

@Entity
@Table (name = "ponto")
public class Ponto implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue
    private Integer id;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name="cliente", nullable=true)
    private UsuarioCliente cliente;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name="loja", nullable=false)
    private UsuarioLoja loja;

    @Column(name="dataCriacao")
    private Date dataCriacao;

    @Column(name="dataUtilizado", length=12, nullable=true)
    private Date dataUtilizado;

    @Column(name="dataExpira")
    private Date dataExpira;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "funcionario", nullable=true)
    private Funcionario funcionario;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "pontoReceber", nullable=true)
    private PontoReceber pontoReceber;

    @Column(name="qtdPontos", nullable=false)
    private long qtdPontos;

    @Column(name="obsPontos", nullable = true,length=300)
    private String obsPontos;

    @NotEmpty
    @Column(name="tipo",nullable = false)
    private Integer tipo;

    public Ponto(Integer id, UsuarioCliente cliente,UsuarioLoja loja, Date dataCriacao, Date dataUtilizado,
              Date dataExpira, Funcionario funcionario, PontoReceber pontoReceber, long qtdPontos, String obsPontos, Integer tipo) {
        setId(id);
        setCliente(cliente);
        setLoja(loja);
        setDataCriacao(dataCriacao);
        setDataUtilizado(dataUtilizado);
        setDataExpira(dataExpira);
        setFuncionario(funcionario);
        setPontoReceber(pontoReceber);
        setQtdPontos(qtdPontos);
        setObsPontos(obsPontos);
        setTipo(tipo);
    }
        // getters and setters
    }

Control:

@RequestMapping("/listarClientes")
    public String listarClientesPontos(Map<String, Object> map, HttpSession session) {

        ...

        List<Ponto> pontos = pontoService.listLoja(loja.getId());

        map.put("pontos", pontos);

        return "listaClientesPonto";
    }
}

View:

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@taglib uri="http://www.springframework.org/tags" prefix="spring"%>


    <body>
        <h2>Lista Clientes</h2>

        <table>
          <tr>
            <th>ID Cliente</th>
            <th>CPF Cliente</th>
            <th>Pontos totais:</th>
          </tr>

          <c:forEach items="${pontos}" var="ponto" varStatus="count">
          <tr>
            <td>${ponto.cliente.id}</td>
            <td>${ponto.cliente.cpf}</td>
            <td>${ponto.qtdPontos}</td>
          </tr>
          </c:forEach>
        </table>
    </body>

Why I am getting this error?
Has any better why to receive this Object Ponto in a List?

obs.. without new Ponto(...) returns a list of Ponto with unidentified Objects[]

Lipo

Found the problem... I made some bad constructors, so I edited the constructors in my entity:

@Entity
@Table (name = "ponto")
public class Ponto implements java.io.Serializable {

    @Id
    @GeneratedValue
    private Integer id;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name="cliente", nullable=true)
    private UsuarioCliente cliente;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name="loja", nullable=false)
    private UsuarioLoja loja;

    @Column(name="dataCriacao")
    private Date dataCriacao;

    @Column(name="dataUtilizado", length=12, nullable=true)
    private Date dataUtilizado;

    @Column(name="dataExpira")
    private Date dataExpira;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "funcionario", nullable=true)
    private Funcionario funcionario;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "pontoReceber", nullable=true)
    private PontoReceber pontoReceber;

    @Column(name="qtdPontos", nullable=false)
    private long qtdPontos;

    @Column(name="obsPontos", nullable = true,length=300)
    private String obsPontos;

    @NotEmpty
    @Column(name="tipo",nullable = true)
    private Integer tipo;

    public Ponto() {
    }

    public Ponto(UsuarioCliente cliente, UsuarioLoja loja, long qtdPontos) {
        this.cliente = cliente;
        this.loja = loja;
        this.qtdPontos = qtdPontos;
    }
    // getters and setters
}

and HQL:

    Query q = getSession().createQuery("select new Ponto(ss.cliente,ss.loja,sum(ss.qtdPontos) as qtdPontos) "
            + "from Ponto as ss where ss.loja.id = :idLoja "
            + "group by ss.cliente, ss.loja");
    q.setParameter("idLoja", idLoja);

I am crying like a baby, four days with this issue.

Thanks for the directions Thufir Hawat.

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

org.hibernate.hql.ast.QuerySyntaxException: Unable to locate appropriate constructor on class

From Dev

org.hibernate.hql.ast.QuerySyntaxException: Unable to locate appropriate constructor

From Dev

Criteria API Unable to locate appropriate constructor on class

From Dev

JPA - Unable to locate appropriate constructor on class

From Dev

Getting error Could not locate appropriate constructor on class

From Dev

QuerySyntaxException locating appropriate constructor in Hibernate

From Dev

QuerySyntaxException: Unable to locate class

From Dev

HibernateQueryException: Unable to locate class

From Dev

Hibernate: Unable to load class

From Dev

Ctor-initializer for a class doesn't call to the appropriate constructor

From Dev

C++ templated class "no appropriate default constructor available"

From Dev

How to find appropriate PPA for installing specific package to solve Unable to locate package?

From Dev

org.hibernate.TransactionException: Unable to locate JTA UserTransaction

From Dev

Hibernate: Unable to locate persister: java.math.BigDecimal

From Dev

org.hibernate.TransactionException: Unable to locate JTA UserTransaction

From Dev

org.hibernate.HibernateException: Unable to locate current JTA transaction

From Dev

Hibernate: Unable to locate persister: java.math.BigDecimal

From Dev

HQL is unable to understand a class's property which is a set of another class

From Dev

Hibernate: No default constructor for entity Inner Class

From Dev

No appropriate default constructor available

From Dev

"No appropriate constructor available"

From Dev

Unable to locate class after new object in select query

From Dev

Unable to locate the specified class: Hooks.php in codeigniter

From Dev

Junit Runner Class Unable to locate Step Definition file

From Dev

Unable to create a constructor in C++ class

From Dev

Using JPQL(not HQL) with Hibernate

From Dev

Configuring Hibernate for HQL

From Dev

hibernate HQL Query select

From Dev

HQL Hibernate many tables

Related Related

  1. 1

    org.hibernate.hql.ast.QuerySyntaxException: Unable to locate appropriate constructor on class

  2. 2

    org.hibernate.hql.ast.QuerySyntaxException: Unable to locate appropriate constructor

  3. 3

    Criteria API Unable to locate appropriate constructor on class

  4. 4

    JPA - Unable to locate appropriate constructor on class

  5. 5

    Getting error Could not locate appropriate constructor on class

  6. 6

    QuerySyntaxException locating appropriate constructor in Hibernate

  7. 7

    QuerySyntaxException: Unable to locate class

  8. 8

    HibernateQueryException: Unable to locate class

  9. 9

    Hibernate: Unable to load class

  10. 10

    Ctor-initializer for a class doesn't call to the appropriate constructor

  11. 11

    C++ templated class "no appropriate default constructor available"

  12. 12

    How to find appropriate PPA for installing specific package to solve Unable to locate package?

  13. 13

    org.hibernate.TransactionException: Unable to locate JTA UserTransaction

  14. 14

    Hibernate: Unable to locate persister: java.math.BigDecimal

  15. 15

    org.hibernate.TransactionException: Unable to locate JTA UserTransaction

  16. 16

    org.hibernate.HibernateException: Unable to locate current JTA transaction

  17. 17

    Hibernate: Unable to locate persister: java.math.BigDecimal

  18. 18

    HQL is unable to understand a class's property which is a set of another class

  19. 19

    Hibernate: No default constructor for entity Inner Class

  20. 20

    No appropriate default constructor available

  21. 21

    "No appropriate constructor available"

  22. 22

    Unable to locate class after new object in select query

  23. 23

    Unable to locate the specified class: Hooks.php in codeigniter

  24. 24

    Junit Runner Class Unable to locate Step Definition file

  25. 25

    Unable to create a constructor in C++ class

  26. 26

    Using JPQL(not HQL) with Hibernate

  27. 27

    Configuring Hibernate for HQL

  28. 28

    hibernate HQL Query select

  29. 29

    HQL Hibernate many tables

HotTag

Archive