4

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

4

1 回答 1

2

大量 java.util.Date 函数已被弃用,因此如果您的应用程序需要对这些变量执行许多操作,则不应使用它。Joda Time 是最可取的方法,而不是 java.util.Date 或 java.util.Calendar

java.util.Date 只剩下三个未弃用的函数,它们是构造函数、gettime() 和 settime()。随着代码的进行,这可能会导致问题。为了简单的映射, java.util.Date 就足够了。

于 2012-12-19T09:59:31.373 回答