public static void main(String[]arg)
{
Session session = null;
try{
@SuppressWarnings("deprecation")
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
session =sessionFactory.openSession();
Contact contact = new Contact();
contact.setID(3);
contact.setFirstName("Professor");
contact.setLastName("Katagawa");
contact.setEmail("Bradsis@yahoo.com");
session.save(contact);
System.out.println("Done");
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
finally
{
session.flush();
session.close();
}
}
我总是在session.flush()中得到一个NullPointer异常。 我已经有一个类Contact,定义如下,
public class Contact
{
private String firstName;
private String lastName;
private String email;
private int id;
public String getEmail()
{
return email;
}
public String getLastName()
{
return lastName;
}
public String getFirstName()
{
return firstName;
}
public int getID()
{
return id;
}
public void setID(int ID)
{ id=ID; }
public void setEmail(String e)
{
email=e;
}
public void setFirstName(String fn)
{
firstName=fn;
}
public void setLastName(String ln)
{
lastName=ln;
}
}
这条线
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
在main方法中报告为已弃用。我也有一个正确的映射文件。非常感谢您的帮助。
答案 0 :(得分:0)
您的代码中有两个错误:
1)在finally子句中,您使用会话实例而无需进一步检查 - 但只有在代码的前两行成功执行时,实例才可用。所以要么用if (session != null)
包围flush()和close(),要么稍后两行开始尝试。
2)异常后,会话不能再使用了;特别是不可能保存对象或刷新会话。这意味着,flush()和close()应该在session.save()之后的正常块中,而不是在finally子句中。
如果这两个都没有解决问题:请发布NullPointerException的错误消息,其中包含几行堆栈跟踪并发布输出(是否有“完成”或第二个异常,这是由您的捕获条款?)。