Spring Boot JPA Отображение массива из возвращенного значения запроса - PullRequest
0 голосов
/ 06 декабря 2018

Мне нужно выполнить запрос к таблице, которая возвращает массив на основе значений столбца.

Таблица выглядит следующим образом: enter image description here

Результат запроса выглядит следующим образом: enter image description here

Я пытался сопоставить этот массив с классом модели, но он всегда выдает No Dialect mapping for JDBC type: 2003 Есть ли способы сделатьэто?

Мои классы:

@Entity
public class Option {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;
    private int option;

    @ManyToOne
    @JoinColumn(name = "user_id")
    User user;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getOption() {
        return option;
    }

    public void setOption(int option) {
        this.option = option;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }



}

Репозиторий:

@Repository
public interface OptionRepo extends JpaRepository<Option, Integer>{
    @Query(value = "SELECT user_id, array_agg(option) FROM option GROUP BY user_id ORDER BY user_id", nativeQuery = true)
    public List<OptionQuery> getOptions(); 

}

OptionQuery Класс:

public class OptionQuery {

    private int user_id;
    private int[] array_agg;

    public int getUser_id() {
        return user_id;
    }

    public void setUser_id(int user_id) {
        this.user_id = user_id;
    }

    public int[] getArray_agg() {
        return array_agg;
    }

    public void setArray_agg(int[] array_agg) {
        this.array_agg = array_agg;
    }
}

Как мне справиться с этой причинойЯ застрял в этой точке: (

1 Ответ

0 голосов
/ 06 декабря 2018

Я попытался найти ошибку, которую вы опубликовали.Похоже, hibernate испытывает трудности с попыткой преобразовать результат из вашего запроса.

Hibernate не знает, как преобразовать из коробки массив строк, который получается из функции СУБД array_agg.

Рассмотрите возможность реализации UserType.Другой альтернативой является просто отобразить этот результат в строку.Внутри вашего класса вы можете преобразовать результат.

Я нашел полезную информацию в этой теме: Нет отображения диалектов для типа JDBC: 2003

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