Trong truy vấn JPA sau,: fcIds tên tham số cần phải được một danh sách các giá trị số nguyên:Danh sách như một tham số có tên trong JPA truy vấn sử dụng TopLink
@NamedQuery(name = "SortTypeNWD.findByFcIds", query = "SELECT s FROM SortTypeNWD s WHERE s.sortTypeNWDPK.fcId IN (:fcIds)")
Khá hợp lý, đây là những gì được thực hiện khi truy vấn được đặt tên được gọi là:
Query findByDatesPlFcIds = em.createNamedQuery("SortTypeNWD.findByFcIds");
findByDatesPlFcIds.setParameter("fcIds", fcIds);
Trường hợp biến fcIds là một ArrayList chứa số nguyên.
Tất cả các mã trên hoạt động tốt với Hibernate nhưng không với TopLink:
Caused by: java.lang.IllegalArgumentException: You have attempted to set a value of type class java.util.ArrayList for parameter fcIds with expected type of int from query string SELECT s FROM SortTypeNWD s WHERE s.sortTypeNWDPK.fcId IN (:fcIds).
Có một cách giải quyết để sử dụng một danh sách như một tham số có tên trong TopLink? Loại tham số được đặt tên có thể bị ép buộc không?
Ý tưởng sáng suốt của ai là đưa nó vào các truy vấn được đặt tên chứ không phải NativeNamedQueries? Tôi đã tìm kiếm hai giờ cố gắng tìm ra lý do tại sao truy vấn của tôi sẽ không hoạt động. – SoftwareSavant