我们的实体中有某些数据库日期映射,映射java.util.Calendar
如下:
@Temporal( TemporalType.TIMESTAMP )
@Column( name = "END_DATE" )
private Calendar end;
请注意,这目前适用于 Oracle DATE 类型,其中包含日期和时间信息。我目前不明白为什么一个简单的java.util.Date
不够(甚至更好)。
问:
将数据库日期时间列映射为java.util.Calendar
而不是的优点和缺点是java.util.Date
什么?
一个缺点Calendar
是当有 JSF 表单时
<p:calendar value="#{managerBean.selectedEntity.end.time}"
...>
</p:calendar>
你必须使用end.time
. 显示时没问题,但是当提交并且该Calendar
字段end
默认为空(可选)时,例如在新的空白实体上,则提交将失败并出现异常:
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
映射有什么好处呢?