首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

hibernate开发 空指针有关问题

2012-01-15 
hibernate开发 空指针问题在进行many-to-many映射的时候,提示为空指针。配置为Person.hbm.xml:?xmlversion

hibernate开发 空指针问题
在进行many-to-many映射的时候,提示为空指针。
配置为Person.hbm.xml:
<?xml   version= "1.0 "   encoding= "UTF-8 "?>
<!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.cqmc.Person "   table   = "PERSON ">
<id   name   = "id "   column   = "PERSON_ID ">
<generator   class= "increment "> </generator>
</id>
<property   name= "age "   column= "AGE "> </property>
<property   name= "firstName "   column= "FIRSTNAME "> </property>
<property   name= "lastName "   column= "LASTNAME "> </property>
<set   name= "events "   table   = "PERSON_EVENT ">
<key   column= "PERSON_ID "/>
<many-to-many   column= "EVENT_ID "   class= "com.cqmc.Event "/>
</set>
</class>
</hibernate-mapping>
CODE:
/**
  *   Created   on   2007-1-9   17:00:00
  *
  *   @author   fanxue.bu
  *
  *   @company   Chongqing   Justin   Mobile   Business   Co.,Ltd.
  *
  */
package   com.cqmc;
import   java.util.*;
public   class   Person   {
private   Set   events   =   new   HashSet();
private   long   id;
private   Integer   age;
private   String   firstName;
private   String   lastName;
public   Person(){
}
public   void   setEvents(Set   events){
this.events   =events;
}
public   Set   getEvents(){
return   this.events;
}
private   void   setId(long   id){
this.id   =   id   ;
}
public   long   getId(){
return   this.id   ;
}
public   void   setAge(Integer   age){
this.age   =   age;  
}
public   Integer   getAge(){
return   this.age;
}
public   void   setFirstName(String   firstName){
this.firstName   =   firstName;
}
public   String   getFirstName(){
return   this.firstName;
}
public   void   setlastName(String   lastName){
this.lastName   =   lastName;
}
public   String   getlastName(){
return   this.lastName;
}

}
主程序代码:
package   com.cqmc;

import   org.hibernate.*;
import   java.util.Date;
import   util.HibernateUtil;
import   java.util.*;
import   java.text.*;
import   org.hibernate.cfg.*;
public   class   EventManager   {
public   static   void   main(String[]   args)throws   Exception{
EventManager   mgr   =   new   EventManager();
//mgr.deleteDate();
try{
Long   personId   =mgr.createAndStorePerson( "fanxue ", "bu ");
Long   eventId   =   mgr.createAndStoreEvent( "EventId ",new   Date());
mgr.addPersonToEvent(personId,eventId);


}catch(HibernateException   ex){
ex.printStackTrace();
System.out.println( "message: "+ex.getMessage());
}
//Long   personId   =mgr.createAndStorePerson()
//mgr.createAndStoreEvent( "My   Event ",new   Date());
/*List   list   =   mgr.listEvents();
SimpleDateFormat   sdf   =   new   SimpleDateFormat( "yyyy-MM-dd   HH:mm:ss ");
for(int   i   =0;   i   <   list.size();   i++){
Event   event   =   (Event)list.get(i);
System.out.println( "Date: "+sdf.format(event.getDate())+ "   Title: "+event.getTitle()+ "     ID: "+event.getId());
}*/
HibernateUtil.getSessionFactory().close();
}
/**
  *   @param   title
  *   @param   theDate
  */
private   Long   createAndStorePerson(String   firstName,String   lastName)throws   Exception{
Session   session   =HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
//System.out.println( "Begin.!   Person. ");
//for(int   i   =1;   i   <20;i   ++){
int   i   =1;
//Integer   t   =   (Integer.valueOf(i));
Person   thePerson   =   new   Person();
thePerson.setAge(Integer.valueOf(i));
thePerson.setFirstName(firstName);
thePerson.setlastName(lastName);
System.out.println( "1   rows   insert. ");
//}
session.getTransaction().commit();
return   Long.valueOf(1);
}
private   Long   createAndStoreEvent(String   title,Date   theDate)throws   Exception{
Session   session   =   HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
//System.out.println( "Begin! ");
//for(int   i   =0;   i <20;   i++){
Event   theEvent   =   new   Event();
theEvent.setTitle(title);
theEvent.setDate(theDate);
session.save(theEvent);
//System.out.println( "1   rows   insert.! ");
//}
//System.out.println( "Success! ");
session.getTransaction().commit();
return   Long.valueOf(1);
}

private   void   addPersonToEvent(Long   personId,Long   eventId){
try{
Session   session   =   HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
Person   aperson=(Person)session.load(Person.class,personId);
System.out.println( "8888888888 ");
System.out.println(aperson);
Event   event   =(Event)session.load(Event.class,eventId);
System.out.println(event);
aperson.getEvents().add(event);
session.getTransaction().commit();
}catch(HibernateException   ex){
ex.printStackTrace();
System.out.println( "--- "+ex.getMessage());
}catch(Exception   ex){
ex.printStackTrace();
System.out.println( "==== "+ex.getMessage());
}
}

}
报错误为:
java.lang.NullPointerException
at   org.hibernate.tuple.AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:372)
at   org.hibernate.persister.entity.AbstractEntityPersister.createProxy(AbstractEntityPersister.java:3121)
at   org.hibernate.event.def.DefaultLoadEventListener.createProxyIfNecessary(DefaultLoadEventListener.java:232)
at   org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:173)


at   org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:87)
at   org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:891)
at   org.hibernate.impl.SessionImpl.load(SessionImpl.java:810)
at   org.hibernate.impl.SessionImpl.load(SessionImpl.java:803)
at   com.cqmc.EventManager.addPersonToEvent(EventManager.java:84)
at   com.cqmc.EventManager.main(EventManager.java:16)
====null

[解决办法]
??

热点排行