Отображение типов гибернации короткое по сравнению с интерфейсом byte / JPL и собственным запросом

#java #sql-server #hibernate

#java #sql-сервер #гибернация

Вопрос:

я пытаюсь выбрать динамически генерируемое количество столбцов из таблицы MSSql с помощью Java и гибернации.

Проблема:

Hibernate возвращает другой тип возврата в зависимости от того, какой метод запроса я использую для значений MSSql TinyInt.

Информация:

Версия гибернации: 5.4.12.Окончательный

HibernateDialect: dialect: org.hibernate.dialect.SQLServerDialect

Упрощенная сущность:

     CREATE TABLE SampleEntity
(
    [ID] [int], -- PK etc...,
    [SomeTinyInt] [tinyint]
)
  

Класс объектов, сгенерированный гибернацией:

 @Entity
public class SampleEntity implements Serializable {
    private static final long serialVersionUID = 1L;

    @EmbeddedId
    private int id;

    @Column(name = "SomeTinyInt")
    private Short someTinyInt;

//set get...
}
  

Теперь выбор объекта через JPQL работает нормально.

SELECT e FROM SampleEntity

Выбор объекта с помощью динамически генерируемой строки запроса и выполняется как Native Query например

SELECT SomeTinyInt FROM SampleEntity

Возвращает массив со столбцами, как ожидалось, но SomeTinyInt возвращается как byte , а не как short .

Вопрос: Есть ли способ унифицировать возвращаемый тип?

Комментарии:

1. Я предполагаю, что возвращаемый тип собственного запроса будет зависеть от используемого вами диалекта гибернации. Какой диалект гибернации вы используете? Какую версию гибернации вы используете?

2. Привет, я добавил к вопросу версию диалекта и гибернации. Спасибо, что указали на недостающую информацию

3. Ах, нет, я понял. итак, диалект объясняет, почему он вел себя по-другому для базы данных h2 в памяти. Это просто оставляет вопрос, почему он ведет себя по-разному для диалекта mssql с разными типами запросов