【问题标题】:How to avoid using the deprecated Date constructor while dealing with Oracle date data type?如何在处理 Oracle 日期数据类型时避免使用已弃用的 Date 构造函数?
【发布时间】:2012-08-15 10:04:26
【问题描述】:

我正在使用 Hibernate 3.2.1 和 Oracle 10g 作为后端使用 Spring 3.0.2。在Oracle 数据库表中,有一个数据类型为Date 的字段。这个 Date 类型字段在 Hibernate (POJO) 中与 java.util.Date 映射,如下所示。

private Date discountStartDate;

在向 Oracle 表中插入或更新数据时,我提供了一个 java.lang.String 类型的日期,类似于 08/15/2012 15:08:13。完全没有问题。一切正常,但由于 Oracle 日期数据类型(据我所知)总是使用带有 Hibernate 实体的 java.util.Date 映射,我不能使用其他 Java API,如日历,我必须使用 不推荐使用 Date类的构造函数来处理Hibernate如下。

Discount obj=new Discount();
date=new Date(request.getParameter("txtDiscountStartDate"));
obj.setDiscountStartDate(date);

应避免使用此类已弃用的功能。有没有办法在 Hibernate 中绕过这个已弃用的 Date("StringDate") 构造函数?

【问题讨论】:

    标签: spring hibernate jsp datetime oracle10g


    【解决方案1】:

    不,那是错误的。

    您应该使用DateFormatSimpleDateFormatString 解析为Date

    Here 就是一个例子。

    这是另一个,因为这对你来说似乎很难:

    DateFormat formatter = new SimpleDateFormat("yyyy-MMM-dd");
    formatter.setLenient(false);
    String discountDateAsString = request.getParameter("txtDiscountStartDate");
    Date discountDate = formatter.parse(discountDateAsString);
    

    【讨论】:

    • 但是用SimpleDateFormatDateFormat 解析需要这个语句date=new Date(request.getParameter("txtDiscountEndDate")); 在实际解析之前像date=new Date(request.getParameter("txtDiscountEndDate")); DateFormat df=new SimpleDateFormat("someFormat"); df.format(date);
    • 完成了。如果此构造函数new SimpleDateFormat(); 未指定格式,则默认考虑哪种日期格式?我尝试不使用格式,但它在我的情况下不起作用,并且必须使用另一个重载的构造函数明确指定日期格式。谢谢。
    • 没有默认值。你必须拼出你想要的东西。不允许读心。
    猜你喜欢
    • 2015-07-17
    • 2020-11-19
    • 2017-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    • 2013-04-09
    相关资源
    最近更新 更多