返回重复值的JPA查询
我有一个jpa查询,它应该返回4行,它确实返回4行,但只有结果的前2行是可以的,接下来的2行是重复的第一行。不,第一行在数据库中不重复 这是我的疑问:返回重复值的JPA查询,jpa,jsf-2,jpa-2.0,openjpa,Jpa,Jsf 2,Jpa 2.0,Openjpa,我有一个jpa查询,它应该返回4行,它确实返回4行,但只有结果的前2行是可以的,接下来的2行是重复的第一行。不,第一行在数据库中不重复 这是我的疑问: public static List<DetalleProcesosEntity> getALLbyid(int id_proceso){ Query q = entityManager.createQuery("select a from DetalleProcesosEntity a where a.idProce
public static List<DetalleProcesosEntity> getALLbyid(int id_proceso){
Query q = entityManager.createQuery("select a from DetalleProcesosEntity a where a.idProceso=:id_proceso");
q.setParameter("id_proceso", id_proceso);
List<DetalleProcesosEntity>resultado=q.getResultList();
List<DetalleProcesosEntity>result=new ArrayList<DetalleProcesosEntity>(resultado);
return result;
}
公共静态列表getALLbyid(int-id\u-proceso){
Query q=entityManager.createQuery(“从detalleprocesential a中选择a,其中a.idProceso=:id_proceso”);
q、 setParameter(“id_proceso”,id_proceso);
ListResultAndo=q.getResultList();
Listresult=新的ArrayList(resultado);
返回结果;
}
我所做的是:
从包含一个表的名为“proceos”的视图中,我单击表中的任何“proceos”,然后转到其详细信息(将“proceso”ID作为参数传递):
以下是支持bean的详细信息:
@ManagedBean(name = "det_procesos")
@ViewScoped
public class DetalleProcesosBean {
private int idProceso;
private List<DetalleProcesosEntity>detalles;
@PostConstruct
public void init(){
FacesContext facesContext = FacesContext.getCurrentInstance();
ExternalContext externalContext = facesContext.getExternalContext();
//Obtener parametros del request
Map<String, String> parameterMap = externalContext.getRequestParameterMap();
idProceso = Integer.parseInt(parameterMap.get("id_proc"));
detalles= Procesos.getALLbyid(idProceso);
}
public List<DetalleProcesosEntity> getDetalles() {
return detalles;
}
public void setDetalles(List<DetalleProcesosEntity> detalles) {
this.detalles = detalles;
}
public int getIdProceso() {
return idProceso;
}
public void setIdProceso(int idProceso) {
this.idProceso = idProceso;
}
}
@ManagedBean(name=“det_procesos”)
@视域
公共类detalleprocessbean{
私营企业;
私人名单;
@施工后
公共void init(){
FacesContext FacesContext=FacesContext.getCurrentInstance();
ExternalContext=facesContext.getExternalContext();
//获取参数删除请求
Map parameterMap=externalContext.getRequestParameterMap();
idProceso=Integer.parseInt(参数map.get(“id_proc”);
detalles=proceos.getALLbyid(idProceso);
}
公共列表getDetalles(){
返回detalles;
}
公共作废集合明细表(列表明细表){
this.detalles=detalles;
}
public int getIdProceso(){
返回idProceso;
}
公共无效设置idProceso(int idProceso){
this.idProceso=idProceso;
}
}
如果我在查询中使用distinct,它没有任何区别,我只得到2行,我确信在数据库中有4行具有相同的“id proceso”和不同的值。我解决了它。。这是因为我在处理视图,没有为其中一个视图设置正确的ID(我必须将@ID添加到实体的一个属性中)