Hibernate中的java.util.Date映射

时间:2016-03-14 04:37:10

标签: java hibernate hibernate-mapping

我是struts和Hiberante的新手。 我试图在SQL表中映射日期,总是插入空值。 我没有清楚地了解代码中的错误或错误在哪里?

package com.acv.in.bean;
import java.io.Serializable;
import java.util.Date;
public class Student implements Serializable{
private long   stuid;
private String sfname;
private String slname;
private Date dob;
private String standard;
private String ffname;
private String flname;
private String mfname;
private String mlname;
private String gfname;
private String glname;
private long   phone;


public Student(String sfname, String slname, Date dob, String standard,
        String ffname, String flname, String mfname, String mlname,
        String gfname, String glname, long phone) {
    super();
    this.sfname = sfname;
    this.slname = slname;
    this.dob = dob;
    this.standard = standard;
    this.ffname = ffname;
    this.flname = flname;
    this.mfname = mfname;
    this.mlname = mlname;
    this.gfname = gfname;
    this.glname = glname;
    this.phone = phone;
  }

  public Student() {

  }
  //getter and setter
}

我的映射文件是

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
 <hibernate-mapping>

 <class name="com.acv.in.bean.Student" table="student" >
    <id name="stuid" type="long" >
        <column name="stuid" />
       <generator class="org.hibernate.id.TableHiLoGenerator"/>
    </id>
     <property name="ffname"  type="string"    column="ffname" />
     <property name="flname"   type="string"    column="flname" />
     <property name="gfname"   type="string"    column="gfname" />
     <property name="glname"   type="string"    column="glname" />
     <property name="mfname"   type="string"    column="mfname" />
     <property name="mlname"   type="string"    column="mlname" />
     <property name="sfname"   type="string"    column="sfname" />
     <property name="slname"   type="string"    column="slname" />
     <property name="standard" type="string"    column="standard" />
     <property name="dob"      type="date"      column="dob" />
     <property name="phone"    type="long"       column="phone" />

</class>
</hibernate-mapping>   

是版本问题(对于hibernate / struts)?

2 个答案:

答案 0 :(得分:3)

日期可以使用以下格式:

|--------------|-------------------------------------|---------------|
| Mapping type | Java type                           | ANSI SQL Type |
|--------------|-------------------------------------|---------------|
| date         | java.util.Date or java.sql.Date     |  DATE         |
| time         | java.util.Date or java.sql.Time     |  TIME         |
| timestamp    | java.util.Date or java.sql.Timestamp|  TIMESTAMP    |
| calendar     | java.util.Calendar                  |  TIMESTAMP    |
| calendar_date| java.util.Calendar                  |  DATE         |
|--------------|-------------------------------------|---------------|

您的编程代码段看起来是正确的。让我建议一些改变,看看他们是否可以提供帮助。用这个替换标题:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 

此外,它值得尝试使用本机生成器类(虽然我怀疑这是问题)。

<generator class="native"/>

最后:

<property name="dob" type="calendar_date" column="dob" />

如果这没有帮助,那么提供更多代码(连接和DAO类等)

答案 1 :(得分:2)

这里集成Hibernate与数据库。它没有任何与Hibernate集成的struts角色。它独立工作。

Struts是前端(UI)Maping框架,Hibernate是后端(数据库)映射框架。

对于集成日期与Hibernate一起使用Java.util.Date。或者尝试使用Joda DateTime。