Можно ли добавить пользовательский сопоставитель для Hibernate из типа базы данных NUMBER в Java Integer? - PullRequest
0 голосов
/ 01 апреля 2020

Существует проблема с отображением типа снежинки NUMBER на Java Integer, поскольку невозможно установить INTEGER-подобный тип базы данных, поскольку Snowflake преобразует его в NUMBER (38, 0).

Вы можете прочитать об этом здесь: https://docs.snowflake.com/en/sql-reference/data-types-numeric.html#int -integer-bigint-smallint-tinyint-byteint

Поэтому я хотел бы спросить, возможно ли сделать JPA возвращая тип Integer вместо BigInteger?

Вот таблица ddl:

CREATE TABLE person
(
    name TEXT,
    age INTEGER -- will be converted to NUMBER(38, 0) automatically
);

А вот и метод репозитория JPA:

@Query(value = "SELECT age FROM person WHERE name = :name", nativeQuery = true)
Set<Integer> findAgesByName(@Param("name") String name);

В результате findAgesByName вернуть Set<BigInteger> вместо Set<Integer> и я получу ClassCastException.

Заранее спасибо!

1 Ответ

0 голосов
/ 02 апреля 2020

Это верно, он преобразуется в Numeri c (38,0), чтобы помочь с производительностью и памятью.

Могут ли перечисленные здесь методы таблицы быть полезными?

Добавление getInt () к вашему запросу?

...