2009-06-07 14 views
5

"リテラルがフォーマット文字列と一致しません"というメッセージが表示されます。ここでHibernateを使用してOracleオブジェクトをJavaオブジェクトにマッピング

public String getDateTime(); 
public void setDateTime(String date_time); 

そのクラスのHibernate設定ファイルからのマッピングされています:ここ

<property name="dateTime" column="date_time"> 

とDDLが、そのためにされて

例えば、ここでは、Javaクラスからいくつかの方法があります列:

タイプ=「日付」と「タイムスタンプ」(同時にはない)をattrをhibernate configのプロパティに追加して、Javaの型をStringからDateに変更しましたが、別のエラーが発生しました。私はパラメータのバインディングについて何かを読んだが、頭や尾を作ることはできなかった。

私が設定からそのプロパティをコメントアウトすると、他のすべてが機能しているので、私はそれが私の問題だと確信しています。厄介なことは、私にこの問題を与えないようなOracle Date-> Java Stringマッピングと同じように見える別のテーブル/クラスマッピングがあることです。

答えて

8

Oracleの日付列を反映するプロパティとしてJava.utilの日付クラスを使用する方がよいでしょう。

Class blah{ 
private Date dateTime; 

public Date getDateTime(); 
public void setDateTime(Date dateTime); 

blah(){} 

} 

日付をJavaクラスプロパティとして使用したときのエラーは何ですか?

+0

Guh。私は、初めてSetterメソッドのパラメータの型をStringからDateに変更したとは思わない。今度は時計のように機能したので、気が気にならない。 –

+2

これは、マッピングプロパティに「type」属性を含めないと機能します。 "date"または "timestamp "それは正確に値を変換しません。だから次は悪いです: これがなぜ真実かを説明するリンクがあります:http://fishbowl.pastiche.org/2005/07/13/hibernate_oracle_and_dates_a_story /ここに、ソリューションを説明するリンクがあります:http://www.enavigo.com/2007/10/20/mapping-hibernate-to-oracle-date-fields/ –

2

dateTime属性のタイプは、自動的にOracleの日付/時刻をタイムスタンプまたは日付に変換するタイムスタンプまたは日付である必要があります。あなたは書式設定を行う必要があるので、私は日付を文字列として保持するという点は見当たりません。

関連する問題