Có cách nào để có nhiều câu lệnh SELECT NEW
trong truy vấn jpql
(Hibernate) không?Biểu thức hàm tạo hàm băm với nhiều câu lệnh SELECT mới
này làm việc cho tôi:
@Query("SELECT NEW com.test.project.dto.ItemService(g,s,l,r) "
+" FROM Item g, Service s, Service l , Service r"
+" WHERE s.id = g.id"
+" AND s.location = l.name"
+" AND s.serviceType = 'type'"
+" AND l.serviceType = 'Location'"
+" AND l.area = r.name"
+" AND r.serviceType = 'Region'")
public List<Item> getAllItemsWithServices();
tôi nhận được kết quả mong đợi trong DTO
tôi.
@Component
public class ItemServiceDTO{
private Item item;
private Service serviceType;
private Service serviceLocation;
private Service serviceRegion;
public ItemServiceDTO(item item, Service serviceType, Service serviceLocation, Service serviceRegion) {
super();
this.item = item;
this.serviceType = serviceType;
this.serviceLocation = serviceLocation;
this.serviceRegion = serviceRegion;
}
Nhưng những gì tôi muốn là phải có một thể hiện mới của Language
với contructor của nó.
Ví dụ như thế này:
@Query("SELECT NEW com.test.project.dto.ItemService(g,s,l,r), new LanguageDTO()"
+" FROM Item g, Service s, Service l , Service r"
Hoặc trong một subselect của ItemService
@Query("SELECT NEW com.test.project.dto.ItemService(g,s,l,r, new LanguageDTO())"
+" FROM Item g, Service s, Service l , Service r"
Tôi cũng quan tâm đến việc sử dụng Map
và List
trong đối tượng DTO của tôi, nhưng tôi đọc thats không thể? Có đúng không?
Ứng dụng khởi động mùa xuân của tôi bắt đầu có lỗi khi sử dụng hai ví dụ.
Cuối cùng tôi muốn một bản đồ của Map<List<Item>,Map<List<LanguageDTO>,List<ItemServiceDTO>>> map;
Nhà cung cấp JPA của bạn (tức là EclipseLink, Hibernate) là gì? – Ish
Xin lỗi, Hibernate – Patrick
của tôi xin chào. Tôi đang cố gắng sử dụng toán tử mới nhưng tìm kiếm ít tài nguyên. câu hỏi: bạn có tạo giao diện repo jpa không và đặt câu lệnh này: public list- getAllItemsWithServices(); trong đó repo? Một ví dụ hoặc tham chiếu đến một ví dụ hoàn chỉnh sẽ được đánh giá cao. Cảm ơn bạn –
jscriptor