Search code examples
javahibernatehibernate-mapping

java.util.Date mapping in Hibernate


i am new to struts and Hiberante. I am trying to map date in SQL table, always null values are inserted. I am not getting the clear picture where is the error or mistake in code?

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
}

my mapping file is

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

is it version problem( for hibernate/struts) ?


Solution

  • Date can be used in following formats:

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

    Your programming snippets look correct. Let me suggest a couple of changes to see if they can help. Replace your header with this:

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

    Also, its worth trying using the native generator class (although I doubt that this is the issue).

    <generator class="native"/>
    

    And finally:

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

    If this doesn't help, then provide more code (connection. and DAO classes etc.)