従来の理由から、Oracle データベースに日付を NUMBER として格納しています (たとえば、1101980 は 1980 年 10 月 1 日です)。
jboss AS 7.1.2 を使用しており、永続化プロバイダーとして休止状態になっています。エンティティで java.util.Date を使用できるようにするために、Java.util.Date とデータベースの NUMBER の間で変換する休止状態のカスタム タイプを作成しました。エンティティのプロパティには、それに応じて休止状態の注釈が付けられ@Type
ます。
これまでのところ、これは非常にうまく機能しています。ただし、現在 JPA 2 の基準 API を使用し始めており、これらのクエリにはカスタム タイプが適用されません。
たとえば、生年月日を java.util.date に設定しています。
Predicate birthday = cb.equal( person.get( Person_.dateOfBirth ), date );
しかし、クエリを実行すると、
ORA-00932: 一貫性のないデータ型: 期待されるNUMBERはTIMESTAMPを取得しました
これは、カスタム タイプが適用されないことを示します。これを回避する方法はありますか?たぶん、休止状態の特定の基準 API を使用してですか? Long
エンティティに as date を入れたくない