- - PR -
HibernateにおけるDBデータ型⇔Java変数型のマッピングについて
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-06-02 20:09
お世話になってます。
Hibernateで以下のようなHQLを発行したときに、 結果として戻ってくるList型中身は、Object配列に なるわけですが、Object配列の各要素に対応する Java変数型を指定することは可能なのでしょうか? 下記の例ですと、colsBのがBigDecimal型で入れられ てしまいます。これをFloat型で戻したいのですが・・・。 デフォルトのマッピングを設定できるような対処方法を ご存知でしたら、ご教授頂けると助かります。 【HQL】 select a.id, a.colsB, a.colsC from MappingView a 【View構造】 Cols_A : NUMBER( Cols_B : NUMBER(6,2) Cols_C : VARCHAR 【使用環境】 APServer : Tomcat5.5.9 DB : MySQL5.0.19 FrameWork : Struts1.2.8 SpringFramework1.2.6 Hibernate3.1 |
|
投稿日時: 2006-06-02 20:11
顔文字が出てしまったので訂正します。
失礼しました。 【View構造】 Cols_A : NUMBER(8) Cols_B : NUMBER(6,2) Cols_C : VARCHAR |
|
投稿日時: 2006-06-03 10:27
***.hbm.xmlのCols_Bのところの型をfloatにしたらどうなります?
|
|
投稿日時: 2006-06-03 18:52
返信ありがとう御座います。
いろいろ試していたところ、*.hbm.xml上でFloatで 定義されていたカラムは正常にFloatで返ってきておりました。 実際に問題の起こったコードでは、以下のようにコンストラクタを 使用してBeanに値を入れるように記述してまして、戻り型に合う コンストラクタが見つからないとExceptionが出ておりました。 日付型カラムで、*.hbm.xml上はjava.sql.Dateで定義していたの ですが、どうもjava.util.Dateで返ってきているようでした。 下記HQLにおけるResultBeanにおけるフルコンストラクタの定義は *.hbm.xml にあわせて以下のようになっております。 【ResultBeanコンストラクタ】 public ResultBean(Integer colsA, Float colsB, String colsC, java.sql.Date colsD) これをjava.sql.Date⇒java.util.Dateに変更したところ、 正常に動作いたしました。 別段、java.util.Dateでも仕様上まったく問題ないのですが、 java.sql.Date型だけ *.hbm.xml で定義されている型通りに 値が返ってこないのはちょっと解せない気がします。 この辺のHibernateの挙動についてご存知の方、ご教授頂ければ幸いです。 【HQL】 select new ResultBean(a.id, a.colsB, a.colsC, a.colsD) from MappingView a 【View構造】 Cols_A : NUMBER(8) Cols_B : NUMBER(6,2) Cols_C : VARCHAR Cols_D : TIMESTAMP(うろ覚え。DATETIMEだったかもしれません) |
1