java.util.Calendar
エンティティには、次のようにマッピングされた特定のデータベース日付マッピングがあります。
@Temporal( TemporalType.TIMESTAMP )
@Column( name = "END_DATE" )
private Calendar end;
これは現在、日付と時刻の情報を含む Oracle DATE 型にあることに注意してください。私は現在、単純なjava.util.Date
ものでは十分ではない(またはよりうまく機能する)理由がわかりません。
Q:
データベースの日時列をjava.util.Calendar
ではなくとしてマッピングすることの利点と欠点は何java.util.Date
ですか?
の欠点の 1 つCalendar
は、JSF フォームがある場合です。
<p:calendar value="#{managerBean.selectedEntity.end.time}"
...>
</p:calendar>
を使用する必要がありますend.time
。表示するときは問題ありませんが、送信時にCalendar
フィールドend
がデフォルトで null (オプション) である場合、たとえば新しい空白のエンティティでは、送信は例外で失敗します:
javax.el.PropertyNotFoundException: /view/blaMasterGrid.xhtml @138,62 value="#{managerBean.selectedEntity.end.time}": Target Unreachable, 'null' returned null at
.
.
.
では、マッピングをjava.util.Calendar
超える利点は何ですか?java.util.Date