我正在使用OneToOne映射在MySQL中生成表。我在执行期间得到NullPointerException .... 我正在使用Hibernate 4.3.6.Final
Student.java - 子类
@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;
}
}
主要课程 -
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 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)
答案 0 :(得分:1)
尝试替换
@GenericGenerator (name = "newGenerator" , strategy = "foreign" , parameters = { @Parameter (value = "student_info", name = "property")}
与
@GenericGenerator (name = "newGenerator" , strategy = "foreign" , parameters = { @Parameter (value = "studentInfo", name = "property")}
学生主键映射。似乎属性名称:student_info是错误的。