Hibernate 中的 java.util.Date 映射

Sha*_*rya 0 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
}
Run Code Online (Sandbox Code Playgroud)

我的映射文件是

<?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>   
Run Code Online (Sandbox Code Playgroud)

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

Muk*_*thi 5

日期可以采用以下格式:

|--------------|-------------------------------------|---------------|
| 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         |
|--------------|-------------------------------------|---------------|
Run Code Online (Sandbox Code Playgroud)

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

<?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"> 
Run Code Online (Sandbox Code Playgroud)

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

<generator class="native"/>
Run Code Online (Sandbox Code Playgroud)

最后:

<property name="dob" type="calendar_date" column="dob" />
Run Code Online (Sandbox Code Playgroud)

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