hibernate: Unable to locate appropriate constructor on class - HQL

后端 未结 4 1619
清酒与你
清酒与你 2021-01-11 11:13

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.

4条回答
  •  猫巷女王i
    2021-01-11 11:45

    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.

提交回复
热议问题