2017-12-19 25 views
0

私は、データベースとJava側のShort内部unsigned int(10)ある列a.code_id as workTaskStatusIdを選択していたSQLクエリにそのクエリでMySQL/Hibernate SQLQuery unsigned int(10)をsmallintにキャストする方法は?

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(); 

を次のようしています。
setterMethod()でそのクエリを実行中に入力パラメータ(変更可能)としてShortが必要です。

しかし、変換する/ SQL側でキャストしたい。
どのようにキャストするのですかunsigned int(10)smallint sqlクエリでは?

私は

cast(a.code_id as smallint) as workTaskStatusId, 

をやってみましたが、それはあなたがネイティブクエリを使用しようとしました

答えて

0

あなたができる唯一の次のタイプにCASTCONVERT

  • BINARY [(N)]
  • CHAR [(N)]
  • NCHAR [(N)]
  • JSON
  • DATE
  • DATETIME
  • DECIMAL [(M [D])]
  • [INTEGER]
  • the documentationどおりTIME
  • UNSIGNED [INTEGER]

...に署名しました。

+0

リストのおかげで、あなたの答えを見て私は私の質問は重複していると思うが、 –

0

smallintの近くに私にSQLエラーを与えましたか?

私はデータベースとか、あるいはHQLはsmallintを知らないのですが、データベースの種類ごとにsmallintと呼ばれていないからです。そして、特定の種類のデータベース(Oracleなど)のクエリを実装しようとしているようですが、ネイティブクエリを使用する方がよいでしょう。あなたはsmallintとしてそれを得るために、データベースの特定の機能を使用しようとしています。なぜこれを達成したいのですか?データベースに格納されている値を選択するのは大丈夫ですか?そうでなければ、おそらくそれはstorewd権利ではないことを知っているので、smallintと長い前にしたい。型変換は常にコードの重要な部分です。 MySQLでは

関連する問題