当我尝试执行此HQL以返回对象时,出现Ponto
此错误:
错误[org.hibernate.hql.PARSER](http-
localhost-127.0.0.1-8080-2)无法在类[br.com.cdv.model.entity.Ponto]上找到适当的构造函数[原因=
org.hibernate。
PropertyNotFoundException:类中没有适当的构造函数:br.com.cdv.model.entity.Ponto]
道
@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();
}
我的实体/类
@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
}
控制:
@RequestMapping("/listarClientes")
public String listarClientesPontos(Map<String, Object> map, HttpSession session) {
...
List<Ponto> pontos = pontoService.listLoja(loja.getId());
map.put("pontos", pontos);
return "listaClientesPonto";
}
}
视图:
<%@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>
为什么我收到此错误?
有什么更好的理由为什么要在列表中接收此对象Ponto?
obs ..不new Ponto(...)
返回带有未知对象的Ponto列表[]
发现了问题…我做了一些不好的构造函数,所以我在实体中编辑了这些构造函数:
@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
}
和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);
这个问题四天了,我哭得像个婴儿。
感谢指导Thufir Hawat。
当我尝试只使用Id作为值并删除列表时,它工作了。
问题内容: 我正在实现他们文档中提供的firebase示例。我遇到此错误: com.fasterxml.jackson.databind.JsonMappingException:没有为类型[简单类型,类com.XYZ。$ BlogPost]找到合适的构造函数:无法从JSON对象实例化(需要添加/启用类型信息吗?) 这是我的代码: 我在同一件事上经历了很多问题,说要包含反序列化JSON所需的空构造
问题内容: 我是Java的新手,正在尝试为Minecraft制作一个mod,但我不知道如何解决此错误: 这是我的代码: 这是怎么回事,我正在尝试使字符串“ Username”重定向到另一个类。 问题答案: Java编译器告诉您不能构造对象,因为您对构造函数的调用与任何已知的构造函数都不匹配。 具体来说,编译器发现了两个构造函数: 但您致电给: 都不匹配。
从javase api 8开始,是不推荐的。因此,动态生成是首选的导出对象方式,如下所示: null 我的问题是,当出现在JavaE8 api中时,为什么编译器会出错?
我正在尝试将本机SQL结果映射到我的POJO。下面是配置。我在用Spring。 这是我的课 这里我是怎么称呼它的 但说到线