java.util.Date Hibernate 中的映射

java.util.Date mapping in Hibernate

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

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>   

是否是版本问题(for hibernate/struts)?

日期可以使用以下格式:

|--------------|-------------------------------------|---------------|
| 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         |
|--------------|-------------------------------------|---------------|

您的编程片段看起来是正确的。让我提出一些更改建议,看看它们是否有帮助。将您的 header 替换为:

<?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"> 

此外,值得尝试使用本机生成器 class(尽管我怀疑这是问题所在)。

<generator class="native"/>

最后:

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

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

此处将 Hibernate 与数据库集成。 struts 与 Hibernate 集成没有任何作用。它独立工作。

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

要将 Date 与 Hibernate 集成,请始终使用 Java.util.Date。或者也可以尝试使用 Joda DateTime。