我正在使用JPA,我正在进行查询SQL,但我不知道如何转换为namedQuery 这是使用sql:
的查询SELECT DISTINCT o.descripcion,
t.descripcion ,
d.descripcion ,
e.numRegistrosReportados
FROM estadisticoRD e, oficina o, tipoOficina t, depto d
WHERE e.anual = 2013 AND e.mes=9 AND
e.codOficina='A1B' AND
e.codOficina = o.codOficina AND
o.depto = d.codDepto
GROUP BY d.descripcion, t.descripcion, o.descripcion
但是当我尝试执行命名查询时,我遇到了问题,这是命名查询的尝试:
@NamedQuery(name = "EstadisticoRD.findByEstadistico",
query = "SELECT e FROM EstadisticoRD e,Oficina o, TipoOficina t, Depto d WHERE e.anual=:ANUAL AND e.mes=:MES AND e.codOficina=:CODOFICINA AND e.codOficina=o.codOficina")
但是当我尝试将一个实体的值与我得到的其他实体的值相匹配时
警告The left and right expressions type must be of the same type
完全在命名查询的这一部分:e.codOficina=o.codOficina
显然不是麻烦,因为我不知道如何从不同的实体中获取多个值。
这是实体:
public class EstadisticoRD implements Serializable
{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id", nullable = false)
private Long id;
@Column(name = "anual", length = 4)
private String anual;
@Column(name = "mes", length = 2)
private String mes;
@Column(name = "numRegistrosReportados")
private BigInteger numRegistrosReportados;
@ManyToOne
private Oficina codOficina;
@ManyToOne
private Depto depto;
public EstadisticoRD() {
}
}
如何匹配不同实体的值?
如何从命名查询中获取多个值?
感谢您的回答。
答案 0 :(得分:0)
hi Cristian Chaparro A. 您的查询的连接部分有问题。在JPA中你不能使用你的结构(你可以,但它不像连接那么简单:))。 有关详细信息,请查看here 您的查询将如下所示:
SELECT e FROM EstadisticoRD e inner join e.codOficina as o inner join e.depto as d ...