java.lang.NullPointerException throwed when doing Hibernate Persistence

Im using Hibernate3.

I am trying to add a record of "orderdetail", also setting its many-2-one association "order", which include a many-2-one association with "employer".

Mycode is:

publicclass OrderdetailDaoTest{

publicstaticvoid main(String[] args){

// TODO Auto-generated method stub

try{

Orderdetails vo =new Orderdetails();

IOrdersDAO orderdao =new OrdersDAO();

Integer orderid =new Integer("1");

System.out.println("orderid is "+orderid.intValue());

Orders order = (Orders)orderdao.getOrderByid(orderid);

vo.setOrders(order);

IEmployeesDAO eedao =new EmployeesDAO();

Integer eeid =new Integer("1");

Employees employee = eedao.getEmployeeByid(eeid);

vo.setEmployees(employee);

Calendar startdate = Calendar.getInstance();

startdate.set(2007, 5, 15);

//System.out.println("time is "+startdate.getTime());

vo.setStartDate(startdate.getTime());

Calendar enddate = Calendar.getInstance();

startdate.set(2007, 6, 15);

//System.out.println("time is "+enddate.getTime());

vo.setEndDate(enddate.getTime());

Calendar arrdate = Calendar.getInstance();

arrdate.set(2007, 6, 16);

//System.out.println("time is "+arrdate.getTime());

vo.setArrivalDate(arrdate.getTime());

vo.setArrivalStatus("Experienced Named");

Calendar repatdate = Calendar.getInstance();

repatdate.set(2007, 7, 16);

//System.out.println("time is "+arrdate.getTime());

vo.setRepatDate(repatdate.getTime());

vo.setRepatStatus("Other");

vo.setTransferStatus("Named Transfer");

Calendar transferdate = Calendar.getInstance();

transferdate.set(2007, 7, 1);

//System.out.println("time is "+arrdate.getTime());

vo.setDateTransferred(transferdate.getTime());

vo.setNotes("This is a long test note!");

IArrivalmanifesttblDAO arrivaldao =new ArrivalmanifesttblDAO();

Arrivalmanifesttbl arrival = arrivaldao.getArrivalByAMNO("am01");

vo.setArrivalmanifest(arrival);

IRepatmanifesttblDAO repatdao =new RepatmanifesttblDAO();

Repatmanifesttbl repat = repatdao.getRepatByRMNO("rm01");

vo.setRepatmanifest(repat);

vo.setRepatDetail("This is long test repat detail!");

vo.setIncludeInArrivalManifest(new Byte("0"));

vo.setIncludeInRepatManifest(new Byte("0"));

vo.setTransferred(new Byte("1"));

vo.setDelete(new Byte("0"));

vo.setSno(new Short("100"));

IOrderdetailsDAO dao =new OrderdetailsDAO();

dao.add(vo);

}

catch(ApplicationException e){

e.getStackTrace();

System.out.println("Exception throwed!");

}

}

}

The stack print like following:

Exception in thread"main" java.lang.NullPointerException

at com.farm.vo.Employers.hashCode(Employers.java:270)

at com.farm.vo.Orders.hashCode(Orders.java:168)

at java.util.HashMap.put(Unknown Source)

at java.util.HashSet.add(Unknown Source)

at java.util.AbstractCollection.addAll(Unknown Source)

at org.hibernate.collection.PersistentSet.endRead(PersistentSet.java:273)

at org.hibernate.engine.CollectionLoadContext.endLoadingCollection(CollectionLoadContext.java:183)

at org.hibernate.engine.CollectionLoadContext.endLoadingCollections(CollectionLoadContext.java:268)

at org.hibernate.engine.CollectionLoadContext.endLoadingCollections(CollectionLoadContext.java:249)

at org.hibernate.loader.Loader.endCollectionLoad(Loader.java:866)

at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:853)

at org.hibernate.loader.Loader.doQuery(Loader.java:717)

at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)

at org.hibernate.loader.Loader.loadCollection(Loader.java:1919)

at org.hibernate.loader.collection.CollectionLoader.initialize(CollectionLoader.java:36)

at org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:520)

at org.hibernate.event.def.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:60)

at org.hibernate.impl.SessionImpl.initializeCollection(SessionImpl.java:1676)

at org.hibernate.collection.AbstractPersistentCollection.forceInitialization(AbstractPersistentCollection.java:454)

at org.hibernate.engine.StatefulPersistenceContext.initializeNonLazyCollections(StatefulPersistenceContext.java:755)

at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:229)

at org.hibernate.loader.Loader.loadEntity(Loader.java:1785)

at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:47)

at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:41)

at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:2730)

at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:365)

at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:346)

at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:123)

at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:177)

at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:87)

at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:862)

at org.hibernate.impl.SessionImpl.get(SessionImpl.java:799)

at org.hibernate.impl.SessionImpl.get(SessionImpl.java:792)

at com.farm.dao.OrdersDAO.getOrderByid(OrdersDAO.java:98)

at com.farm.unitTest.daotest.OrderdetailDaoTest.main(OrderdetailDaoTest.java:33)

The mapping file for orderdetail is like:

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<!--

Mapping file autogenerated by MyEclipse - Hibernate Tools

-->

<hibernate-mapping>

<class name="com.farm.vo.Orderdetails" table="orderdetails" catalog="llbv1" lazy="false">

<id name="orderDetailId" type="java.lang.Integer">

<column name="OrderDetailID" />

<generator class="native" />

</id>

<many-to-one name="employees" class="com.farm.vo.Employees" lazy="false">

<column name="EmployeeID" />

</many-to-one>

<many-to-one name="orders" class="com.farm.vo.Orders" lazy="false">

<column name="OrderID" />

</many-to-one>

<many-to-one name="repatmanifest" class="com.farm.vo.Repatmanifesttbl" cascade="all" lazy="false">

<column name="RepatManifestNo" length="50" />

</many-to-one>

<many-to-one name="arrivalmanifest" class="com.farm.vo.Arrivalmanifesttbl" cascade="all" lazy="false">

<column name="ArrivalManifestNo" length="50" />

</many-to-one>

<property name="startDate" type="java.util.Date">

<column name="StartDate" length="19" />

</property>

<property name="endDate" type="java.util.Date">

<column name="EndDate" length="19" />

</property>

<property name="arrivalDate" type="java.util.Date">

<column name="ArrivalDate" length="19" />

</property>

<property name="arrivalStatus" type="java.lang.String">

<column name="ArrivalStatus" length="21" />

</property>

<property name="repatDate" type="java.util.Date">

<column name="RepatDate" length="19" />

</property>

<property name="repatStatus" type="java.lang.String">

<column name="RepatStatus" length="18" />

</property>

<property name="transferStatus" type="java.lang.String">

<column name="TransferStatus" length="16" />

</property>

<property name="dateTransferred" type="java.util.Date">

<column name="DateTransferred" length="19" />

</property>

<property name="notes" type="java.lang.String">

<column name="Notes" />

</property>

<property name="repatDetail" type="java.lang.String">

<column name="RepatDetail" />

</property>

<property name="includeInArrivalManifest" type="java.lang.Byte">

<column name="IncludeInArrivalManifest" />

</property>

<property name="includeInRepatManifest" type="java.lang.Byte">

<column name="IncludeInRepatManifest" />

</property>

<property name="transferred" type="java.lang.Byte">

<column name="Transferred" />

</property>

<property name="iomRemarks" type="java.lang.String">

<column name="IOM_Remarks" />

</property>

<property name="observations" type="java.lang.String">

<column name="Observations" />

</property>

<property name="mitigatingFactors" type="java.lang.String">

<column name="MitigatingFactors" />

</property>

<property name="delete" type="java.lang.Byte">

<column name="isDelete" />

</property>

<property name="employeeRemarks" type="java.lang.String">

<column name="EmployeeRemarks" />

</property>

<property name="nbstatus" type="java.lang.String">

<column name="NBStatus" length="50" />

</property>

<property name="sno" type="java.lang.Short">

<column name="SNo" />

</property>

<property name="userComment" type="java.lang.String">

<column name="UserComment" />

</property>

</class>

</hibernate-mapping>

I am stuck with this problem for several days. Any seggestion is appreciated!

Thanks in advance.

[14428 byte] By [j2ee_novicea] at [2007-11-27 8:09:12]
# 1

It seems that the exception throwed on the hashcode() for NULL value field include in the association.... The many-2-one assciation is bidirectional, by the way.

Is my hibernate mapping file somewhere implicitly restrict the association fields can not be NULL? If it is, can somebody tells me where?

Following is "orderdetail"'s bidirectinal association definition, "order" mapping file:

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<!--

Mapping file autogenerated by MyEclipse - Hibernate Tools

-->

<hibernate-mapping>

<class name="com.farm.vo.Orders" table="orders" catalog="llbv1">

<id name="orderId" type="java.lang.Integer">

<column name="OrderID" />

<generator class="native" />

</id>

<many-to-one name="employer" class="com.farm.vo.Employers" lazy="false">

<column name="EmployerID"/>

</many-to-one>

<property name="hrdcorderCode" type="java.lang.String">

<column name="HRDCOrderCode" length="50" />

</property>

<property name="farmsorderCode" type="java.lang.String">

<column name="FARMSOrderCode" length="50" />

</property>

<property name="orderDate" type="java.util.Date">

<column name="OrderDate" length="19" />

</property>

<property name="startDate" type="java.util.Date">

<column name="StartDate" length="19" />

</property>

<property name="endDate" type="java.util.Date">

<column name="EndDate" length="19" />

</property>

<property name="orderType" type="java.lang.String">

<column name="OrderType" length="20" not-null="true" />

</property>

<property name="noOfWorker" type="java.lang.Short">

<column name="NoOfWorker" />

</property>

<property name="orderStatus" type="java.lang.String">

<column name="OrderStatus" length="12" />

</property>

<property name="notes" type="java.lang.String">

<column name="Notes" />

</property>

<set name="orderdetails" inverse="true" cascade="all-delete-orphan" lazy="false">

<key column="OrderId"/>

<one-to-many class="com.farm.vo.Orderdetails"/>

</set>

</class>

Thank you!

j2ee_novicea at 2007-7-12 19:52:08 > top of Java-index,Database Connectivity,Java Database Connectivity (JDBC)...