Tôi có một kho lưu trữ đó trông như thế này:mùa xuân dữ liệu JPA kho: IN-điều khoản trong truy vấn nguồn gốc không làm việc
public interface UserRepository extends JpaRepository<User, Long>
{
User findByEmailIgnoreCase(String email);
@Query("select u from User u where u.id in (:ids)")
Set<User> getByIdInSet(@Param("ids") Set<Long> ids);
}
Khi tôi gọi getByIdInSet
tôi nhận được lỗi sau:
Caused by: java.lang.IllegalArgumentException: You have attempted to set a value of type class org.eclipse.persistence.indirection.IndirectSet for parameter ids with expected type of class java.lang.Long from query string select u from User u where u.id in (:ids).
at org.eclipse.persistence.internal.jpa.QueryImpl.setParameterInternal(QueryImpl.java:933)
at org.eclipse.persistence.internal.jpa.EJBQueryImpl.setParameter(EJBQueryImpl.java:593)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
Rõ ràng Tôi không biết điều gì có nghĩa là vì tôi đã thử thay đổi tất cả các loại dữ liệu và vẫn gặp lỗi tương tự. Tập hợp các id tôi đang truyền chỉ chứa một id. Hãy chỉ cho tôi hướng đi đúng.
Hình như mà làm việc, cảm ơn. Tại sao một số địa điểm yêu cầu parens xung quanh bộ sưu tập? Tôi có một số kho lưu trữ khác mà yêu cầu các parens và sự khác biệt duy nhất tôi có thể thấy là parens là trên bộ sưu tập của thực thể và không phải là param. Đó có phải là sự khác biệt? –
Tài liệu tham khảo của tôi là [bài đăng này] (http://stackoverflow.com/a/4379008/4074715), trong đó nó nói rằng bạn không cần các parens với tham số có giá trị thu thập. Rõ ràng, Hibernate hoạt động khác nhau trong các phiên bản khác nhau, không biết về EclipseLink. Không thể tìm thấy bất kỳ tham chiếu JPA chính thức nào về điều này, tôi sẽ cập nhật câu trả lời của mình nếu tôi tìm thấy điều gì đó. –
[Ở đây] (http://stackoverflow.com/a/2793690/4074715) là một bài viết về điều này, với tham chiếu đến lỗi Hibernate với các yêu cầu parens xung quanh tham số. –