我有以下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
列,在Java中选择 unsigned int(10)
列Short
侧。
在执行该查询时,我在 setterMethod()
处获得异常,其中Short
作为输入参数(我可以更改)。
但我想在sql端转换/转换它
如何在SQL查询中将 unsigned int(10)
投射到 smallint
?
我试过
cast(a.code_id as smallint) as workTaskStatusId,
但它在smallint
答案 0 :(得分:0)
您是否尝试使用原生查询?
我认为数据库和/或HQL不知道smallint因为它并不是因为每种数据库都被称为smallint。而且,由于您似乎正在尝试仅为特定类型的数据库(如Oracle或其他类似)实现查询,因此最好使用本机查询。您正在尝试使用数据库的特定功能将其作为smallint。你为什么要这样做?是否可以选择存储在数据库中的值?否则也许它不是正确的,因为你知道你需要一个小小的,而且在它很长之前。类型转换始终是代码的关键部分。
答案 1 :(得分:0)
在MySQL中,您可以CAST
和CONVERT
只关注以下类型:
...按照the documentation。