Tôi đang tạo một truy vấn phức tạp với nhiều bảng và cần liệt kê kết quả. Thông thường, tôi đang sử dụng EntityManager
và bản đồ kết quả cho JPA-Đại diện:JPA Query.getResultList() - sử dụng theo cách chung chung
UserEntity user = em.find(UserEntity.class, "5");
Sau đó, tôi có thể truy cập vào tất cả các giá trị như là người dùng UserEntity
lớp định nghĩa nó. Nhưng làm cách nào tôi có thể truy cập vào trường-giá trị được trả lại từ truy vấn nhiều bảng gốc? Những gì tôi nhận được là một danh sách các đối tượng. Đó là tốt cho đến nay, nhưng những gì "là" mà đối tượng? Mảng? Bản đồ? Bộ sưu tập? ...
//simpleExample
Query query = em.createNativeQuery("SELECT u.name,s.something FROM user u, someTable s WHERE s.user_id = u.id");
List list = query.getResultList();
//do sth. with the list, for example access "something" for every result row.
Tôi đoán câu trả lời khá đơn giản, nhưng hầu hết các ví dụ chỉ hiển thị mức sử dụng khi trực tiếp truyền tới targetClass.
PS: Trong ví dụ, tôi có thể sử dụng ánh xạ lớp học của khóa học. Nhưng trong trường hợp của tôi someTable
không được quản lý bởi JPA, và do đó tôi không có thực thể cũng như tôi có một lớp đại diện của nó, và kể từ khi tôi tham gia như 20 bảng, tôi không muốn tạo tất cả các lớp học chỉ để truy cập các giá trị.
Vì vậy, tôi cho rằng 'danh sách [x] .object [0] 'là giá trị đầu tiên (u.name) và' danh sách [x] .object [ 1] 'là thứ hai (s.something) - vì vậy không có quyền truy cập' assoc'? – dognose
Nếu bạn chỉ in ra đối tượng [i] và tất cả nguyên thủy và ngày/giờ phải được in ở định dạng mặc định của chúng. –
@ MGPJ Bạn có thể lập phương án trả lời bằng một ví dụ – Reenu