#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 с разными типами запросов