Làm sao để sử dụng where x.id in () trong jpa

em truyền vào một list idArea mà ko nhận… có phải do setParameter ko nhận list ko ạ

List<Object[]> result=entityManager.createQuery("select DISTINCT p.idProject,p.name,t.name,p.idArea " +
            "from Project p,ProductType t,Sector st,Building b,Apartment a " +

            "where p.idArea IN :idArea and p.idProductType=:id  " +

            "and p.idProductType=t.id and p.idProject=st.idProject " +

            "and st.idSector=b.idSector and b.idBuilding=a.idBuilding " +

            "and a.sellPrice between ':minPrice' and ':maxPrice'")

            .setParameter("idArea", Arrays.asList(idArea)).setParameter("id",id)

            .setParameter("minPrice",minPrice).setParameter("maxPrice",maxPrice)

            .setMaxResults(limit).setFirstResult((page-1)*limit).getResultList();

Câu hỏi của bạn có nhiều vấn đề!
1/ nó có lỗi lúc run hay không?
2/ Nó không thực hiện dúng không trả về đúng với mong muốn.

Và JPA 2.0 mới hỗ trợ truyền vào list

dữ liệu trả về sai ạ… nó ko lấy theo list id em truyền vào

Theo mình bạn nên test theo kiểu từ từ. Là bạn get thử cái đống danh sách list id bạn truyền vào được không. Đừng để một cục như thế:

    createQuery("select DISTINCT p.idProject,p.name,t.name,p.idArea " +
        "from Project p,ProductType t,Sector st,Building b,Apartment a " +
        "where p.idArea IN :idArea").getResultList();

hay có thể debug xem thử list ID truyền vào có đúng không? hay có thể sai chỗ nào nên nó không get đúng

em run như a bảo… nó ko nhận list đó ạ
dữ liệu truyền vào

{
  "sessionId": "",
  "wsCode": "",
  "token": "",
  "wsRequest": {
  	"idArea":[61,62],
  	"limit":5,
  	"page":1
  	
  }
}

Thử đổi :

:idArea => (:idArea)

ko được a ạ… nó vẫn ko nhận list

Vậy chắc nhờ cao nhân khác rồi -_-

dạ lại chờ cao nhân khác… :smiley:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?