У меня следующий запрос sql
final String GET_ASSIGNMENT_STATUS =
"select wtd.work_task_detail_id as workTaskDetailId, "
+ "a.code_name as workTaskStatusName, a.code_id as workTaskStatusId, "
+ "from work_task_detail wtd "
... JOINS
+ "where wtd.work_task_detail_id = :assignmentId";
assignmentStatus = ( AssignmentStatus ) session.createSQLQuery(GET_ASSIGNMENT_STATUS)
.setResultTransformer( Transformers.aliasToBean( AssignmentStatus.class ) )
.setInteger("assignmentId", assignmentId).uniqueResult();
В этом запросе я a.code_id as workTaskStatusId
столбец a.code_id as workTaskStatusId
который является unsigned int(10)
внутри базы данных и Short
на стороне Java.
Выполняя этот запрос, я получаю исключение в setterMethod()
который принимает Short
как входной параметр (который я могу изменить).
но я хочу преобразовать/бросить его на стороне sql.
Как мне smallint
unsigned int(10)
в smallint
в sql-запросе?
Я пробовал делать
cast(a.code_id as smallint) as workTaskStatusId,
но это дало мне ошибку sql возле smallint
В MySQL вы можете использовать CAST
и CONVERT
только для следующих типов:
... согласно документации.
Вы пытались использовать собственный запрос?
Я считаю, что база данных или HQL не знает smallint, потому что она не называется smallint для каждого типа базы данных. И, как кажется, вы пытаетесь реализовать запрос только для определенного типа базы данных (например, Oracle или что-то еще), лучше использовать собственный запрос. Вы пытаетесь использовать определенную функцию базы данных, чтобы получить ее как smallint. Почему вы хотите достичь этого? Нельзя ли выбрать значение, поскольку оно хранится в базе данных? В противном случае, возможно, это не будет правильно, потому что вы знаете, что хотите маленький интервал, и до того, как он был длинным. Преобразование типов всегда является важной частью кода.