Java-Spring-Hibernate中的日期格式发生了变化

时间:2014-03-29 00:43:16

标签: java spring hibernate spring-mvc

我的目标非常简单。将当前日期存储在Oracle Global Temporary表中,并使用Spring MVC和Hibernate作为ORM在JavaScript页面上显示该日期。

我写的代码是(请注意系统时间是“2014年3月29日11:29:44 2014年东部时间”):

public List<TmpClass> getData() {
        Integer sno = 1;

        /* Write query to save the data in the temporary table. Function calls getSession().save(..) */
        Date date = new Date();
        saveData(new TmpClass(sno, date));

        /* Retrieve the data from TmpClass class. Function calls getSession().queryObject("from TmpClass") */
        return retrieveData();
    }

配置文件: 资源路径上的hibernate.cfg.xml:

<hibernate-configuration>
    <session-factory>
        <mapping class="com.tesco.larc.forms.TmpGenUtil" />
    </session-factory>
</hibernate-configuration>

-servlet.xml有

<!-- Data Source for Oracle -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="${jdbc.driverClassName}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
</bean>

<!-- Hibernate Session Factory Configuration -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="packagesToScan" value="com.myproject" />
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">${jdbc.dialect}</prop>
        </props>
    </property>
</bean>

TmpClass

    @Entity
    @Table(name = "TMPTABLE")
    public class TmpClass {
        @Id
        @Column(name = "SNO")
        private Integer sno;

        @Column(name = "dcol1")
        private Date date;

//getter and setter methods omitted

Controller类,在Model中创建存储上述函数的输出。

@RequestMapping(value = {"/", "index"}, method = RequestMethod.GET)
public String displayContacts(Model model) {
    model.addAttribute("Data", contactService.getData());

    return "eInfoScreen";
}

JavaScript代码是:

<c:forEach items="${Data}" var="list">
                <tr>
                    <td>${list.id}</td>
                    <td>${list.date}</td>
                </tr>
            </c:forEach>

我的日期是:

Sr BAR_DATE
1 **88-Mar-2014**

我无法弄清楚,为什么不是2014年3月29日,它显示为2014年3月88日。

非常感谢任何帮助或指针。

1 个答案:

答案 0 :(得分:2)

看起来,当您定义日期格式时,您使用的是DD,这是一年中的某一天而不是dd。 (3月29日是一年中的第88天。)