JPA查询返回重复的值

时间:2013-06-27 08:51:26

标签: 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.idProceso=:id_proceso");
        q.setParameter("id_proceso", id_proceso);
        List<DetalleProcesosEntity>resultado=q.getResultList();
        List<DetalleProcesosEntity>result=new ArrayList<DetalleProcesosEntity>(resultado);
        return result;

    }

我在做什么:

从名为“procesos”的视图中包含一个表格,我点击表格中的任何“过程”,然后我会查看其详细信息(将“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;
    }
}

如果我在查询中使用distinct它没有任何区别,我只得到2行,并且我确信在数据库中有4行具有相同的“id proceso”和不同的值。

1 个答案:

答案 0 :(得分:1)

我解决了..这是因为我正在使用视图而我没有为其中一个设置正确的ID(我必须将@Id添加到实体的一个属性中)