3

従来の理由から、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 を入れたくない

4

0 に答える 0