Как сопоставить список <Long>с array_agg? - PullRequest
1 голос
/ 14 июля 2020

Я выполняю этот запрос @Subselect с помощью Hibernate

SELECT сolumn1, array_agg (DISTINCT сolumn2 :: integer) FROM table GROUP BY сolumn1;

результат SQL:

 сolumn1 | сolumn2 
------------+---------------------
          1 | {1}                 
          2 | {2,3}               
          3 | {3}  

           

Мой класс DAO:

введите здесь описание изображения

import lombok.Data;
import org.hibernate.annotations.Immutable;
import org.hibernate.annotations.Subselect;


import javax.persistence.*;

@Data
@Entity
@Subselect("SELECT сolumn1,\n" +
        "\tarray_agg(DISTINCT сolumn2::integer)\n" +
        "FROM table GROUP BY сolumn1;")
@Immutable
public class Table {

    @Id
    @Column(name = "сolumn1")
    private Long сolumn1;

    @Column(name = "сolumn2")
    private Integer[] сolumn2;
}

Теперь не работает, возникает ошибка:

message": "org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.orm.jpa.JpaSystemException: could not deserialize; nested exception is org.hibernate.type.SerializationException: could not deserialize

Как сопоставить список с array_agg?

1 Ответ

0 голосов
/ 14 июля 2020

Возникла проблема с десериализацией вашего Interger[] column2. Замените его на Collection<Integer>

, что должно позволить ему успешно сопоставить.

Сопоставление массива с Hibernate

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...