繁体   English   中英

从休眠中在线程“ main”中获取异常java.lang.NullPointerException

[英]getting Exception in thread “main” java.lang.NullPointerException from hibernate

为什么即使我只运行一个hello程序(在单独的Java项目中),也出现此错误。 实际上,此错误来自休眠状态,但是任何人都可以向我解释问题的根源,所在的位置以及如何解决。

请找到我的休眠代码:

public static void main(String[] args) {

    Student_Info student_Info = new Student_Info();

    student_Info.setName("xyz");
    student_Info.setRollNo(101);
    student_Info.setLastName("kumar");
    student_Info.setRecordUpdatedDate(new Date());
    student_Info.setRecordUpdatedTime(new Date());
    student_Info.setRecordUpdatedOn(new Date());
    student_Info.setIsActive(false);
    student_Info.setDescription("hi this is xyz.");

    Session session = HibernateUtil.getCurrentSession();
    Transaction transaction = null;
    try {
        transaction = session.beginTransaction();
        session.save(student_Info);
        transaction.commit();
    }catch (Exception e) {
        if (transaction != null)
            transaction.rollback();
        e.printStackTrace();
    } finally {
        session.close();                            //close session
        HibernateUtil.getSessionFactory().close();  //close sessionFactory
    }
}

请找到学生代码

@Entity @Table(name="student")

公共课程Student_Info {

@Id
@GeneratedValue
private int rollNo;

private String name;

@Transient
@Column(name="lastName", nullable=false)
private String lastName;

@Temporal(TemporalType.DATE)
private Date recordUpdatedDate;

@Temporal(TemporalType.TIME)
private Date recordUpdatedTime;

private Date recordUpdatedOn;

private Boolean isActive;

@Lob
private String description;

public String getDescription() {
    return description;
}
public void setDescription(String description) {
    this.description = description;
}
public Boolean getIsActive() {
    return isActive;
}
public void setIsActive(Boolean isActive) {
    this.isActive = isActive;
}


public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public int getRollNo() {
    return rollNo;
}
public void setRollNo(int rollNo) {
    this.rollNo = rollNo;
}

public String getLastName() {
    return lastName;
}
public void setLastName(String lastName) {
    this.lastName = lastName;
}

public Date getRecordUpdatedDate() {
    return recordUpdatedDate;
}
public void setRecordUpdatedDate(Date recordUpdatedDate) {
    this.recordUpdatedDate = recordUpdatedDate;
}
public Date getRecordUpdatedTime() {
    return recordUpdatedTime;
}
public void setRecordUpdatedTime(Date recordUpdatedTime) {
    this.recordUpdatedTime = recordUpdatedTime;
}
public Date getRecordUpdatedOn() {
    return recordUpdatedOn;
}
public void setRecordUpdatedOn(Date recordUpdatedOn) {
    this.recordUpdatedOn = recordUpdatedOn;
}

}

在此处输入图片说明

我认为您交易有问题。 您可以更改交易代码吗?

Transaction transObj = null;
Session sessionObj = null;
try {
    sessionObj = HibernateUtil.buildSessionFactory().openSession();
    transObj = sessionObj.beginTransaction();
    transObj.commit();
} catch (HibernateException exObj) {
    if(transObj!=null){
        transObj.rollback();
    }
    exObj.printStackTrace(); 
} finally {
    sessionObj.close(); 
}

因为你在用

Session session = HibernateUtil.getCurrentSession();

但您没有任何currentSession 因此,在session.beginTransaction()时,这将引发NullPointerException 调用。 在我的解决方案会话是从BuildSessionFactory开始。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM