Я искал различные решения о том, как сопоставить мой пользовательский запрос postgresql (он использует функцию агрегирования и объединение) с моим собственным списком объектов Java, но ни одно из них, похоже, не работает.
Это мой репозиторий:
@Transactional
public List getShopProductWithTagsList(Integer supplierId) {
String sqlQuery = "SELECT id AS productId, description, array_agg(tag_id) AS tags " +
"FROM pood.a_toode AS product LEFT JOIN tags.tag_to_product AS tags ON product.id = tags.product_id " +
"WHERE tags.deleted IS NULL AND product.keel = 1 AND product.supplierId=" + supplierId +
"GROUP BY product.id, product.description " +
"HAVING COUNT(tag_id) > 1";
NativeQuery query = (NativeQuery) entityManager.createNativeQuery(sqlQuery);
return (List<ShopProductWithTagsDto>) query.getSingleResult();
}
И это мой dto:
public class ShopProductWithTagsDto {
private int productId;
private String description;
private List<Integer> tags;
public ShopProductWithTagsDto(int productId, String description, List<Integer> tags) {
this.productId = productId;
this.description = description;
this.tags = tags;
}
}