I am using OneToOne mapping to generate table in MySQL. I am getting NullPointerException during the execution.... I am using Hibernate 4.3.6.Final
Student.java - child class
@Entity
@Table(name="STUDENT")
public class Student {
@Id @GeneratedValue(generator = "newGenerator")
@GenericGenerator (name = "newGenerator" , strategy = "foreign" , parameters = { @Parameter (value = "student_info", name = "property")})
@Column(name="ROLL_NO")
private int rollNo;
@Column(name="MOBILE_NO")
private int mobileNo;
@OneToOne(optional = false , cascade = CascadeType.ALL)
@JoinColumn(name = "rollNo")
private Student_Info studentInfo;
public Student_Info getStudentInfo() {
return studentInfo;
}
public void setStudentInfo(Student_Info studentInfo) {
this.studentInfo = studentInfo;
}
public int getRollNo() {
return rollNo;
}
public void setRollNo(int rollNo) {
this.rollNo = rollNo;
}
public int getMobileNo() {
return mobileNo;
}
public void setMobileNo(int mobileNo) {
this.mobileNo = mobileNo;
}
}
Student_Info.java - ParentClass
@Entity
@Table(name="STUDENT_INFORMATION")
public class Student_Info {
@Id @GeneratedValue
@Column(name="ROLL_NO")
private int rollNo;
@Column(name="FULL_NAME")
private String name;
@Temporal (TemporalType.DATE)
@Column(name="DATE")
private Date date;
public int getrollNo() {
return rollNo;
}
public void setrollNo(int rollNo) {
this.rollNo = rollNo;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Main class--
public static void main(String[] args) {
//Child class is Student , Parent class is Student_Info
Student_Info studentInfo = new Student_Info();
studentInfo.setName("Aman");
studentInfo.setDate(new Date());
/* Student_Info studentInfo1 = new Student_Info();
studentInfo1.setName("Jain");
studentInfo1.setDate(new Date());
studentInfo1.setrollNo(36);*/
Student student = new Student();
student.setMobileNo(93434);
student.setStudentInfo(studentInfo);
SessionFactory sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
session.save(student); //Exception caused by this line
session.getTransaction().commit();
session.close();
sessionFactory.close();
}
Exception Msg
Exception in thread "main" java.lang.NullPointerException
at org.hibernate.tuple.entity.AbstractEntityTuplizer.getPropertyValue(AbstractEntityTuplizer.java:650)
at org.hibernate.persister.entity.AbstractEntityPersister.getPropertyValue(AbstractEntityPersister.java:4736)
at org.hibernate.id.ForeignGenerator.generate(ForeignGenerator.java:96)
at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:117)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:209)
at org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:55)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:194)
at org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:49)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90)
at org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:715)
at org.hibernate.internal.SessionImpl.save(SessionImpl.java:707)
at org.hibernate.internal.SessionImpl.save(SessionImpl.java:702)
at com.sanchit.hibernate.Main.main(Main.java:39)