我们的实体中有某些数据库日期映射,映射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映射有什么好处呢?