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:
Code:
public class OrderdetailDaoTest {
public static void 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:
Code:
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:
Code:
<?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>
[/code]
Any seggestion is appreciate!
Thanks in advance.