この種の問題の場合、通常、JDBCドライバーのバージョンと使用している方言を提供すると役立ちます。
とにかく、私の理解では、実際には次のマッピングが必要です(DATEおよびの場合) 時間):
@Column(name = "READING_DATE")
@Temporal(TemporalType.TIMESTAMP)
private Date readingDate;
そして、あなたが直面している問題は、バージョン9.2でOracleによって導入された狂気に何らかの形で関連しています。TIMESTAMP
を導入しました 列とDATE
のマッピングを変更しました SQLタイプ、FAQを読んでください)。それを解決するためのいくつかのオプションがあります(もちろん、TemporalType.TIMESTAMP
を使用していると仮定しています マッピング):
TIMESTAMP
を使用する 列タイプ (TemporalType.TIMESTAMP
という意味ではありません ここでは、実際にはDB側の列タイプを意味します)。ただし、ナノ秒の精度が必要ない場合は、これが最善の選択ではありません。
または、oracle.jdbc.V8Compatible=true
を設定します システムプロパティまたは接続プロパティとしての互換モード:
<property name="hibernate.connection.oracle.jdbc.V8Compatible">true</property>
はい、このように任意の接続プロパティを設定できます。 Hibernateのドキュメントから:
または、Oracle JDBC 11.1ドライバを使用します(変更を元に戻すことで問題を「修正」しました)。これはIMOの理想的なソリューションです(V8Compatible
ものは非推奨です。