Java 提供NullPointerException的Hibernate方法
我创建了一个addRolesToUser方法,这个方法有两个参数,一个角色对象和一个用户对象 但是,当我在主方法中调用此方法时,会抛出一个NullPointerException 这是我的主要观点: 例外情况是:Java 提供NullPointerException的Hibernate方法,java,spring,hibernate,jakarta-ee,Java,Spring,Hibernate,Jakarta Ee,我创建了一个addRolesToUser方法,这个方法有两个参数,一个角色对象和一个用户对象 但是,当我在主方法中调用此方法时,会抛出一个NullPointerException 这是我的主要观点: 例外情况是: Exception in thread "main" java.lang.NullPointerException at blog.com.dao.UserImp.addRolesToUser(UserImp.java:154) at blog.com.dao.main
Exception in thread "main" java.lang.NullPointerException
at blog.com.dao.UserImp.addRolesToUser(UserImp.java:154)
at blog.com.dao.main.main(main.java:37)
我猜user.getRoles.addroles会中断,因为您没有初始化用户的角色。所以,在用户实体中,应该有如下内容
private List<Role> roles = new ArrayList<Role>();
现在我更改了addRolesToUser方法: 新版本的代码为:
public void addRolesToUser(Role roles,UserDao user) {
try{
session.beginTransaction();
roles=new Role();
user=new UserDao();
user.getRoles().add(roles);
session.save(roles);
session.save(user);
session.getTransaction().commit();
}catch(HibernateException e){
session.getTransaction().rollback();
e.printStackTrace();
}
}
当我在Main中使用该方法时,nullpointerexception的问题就解决了
但是在我的数据库中,object userDao和Role都是Null,而不是数据库中的任何东西都是Null。第154行是哪一行?能否显示初始化会话的部分?我怀疑它是空的。我在HibernateUtil类公共类HibernateUtil{private static final SessionFactory SessionFactory;static{try{//从标准hibernate.cfg.xml//配置文件创建SessionFactory.SessionFactory=new AnnotationConfiguration.configure.buildSessionFactory;}catch Throwable ex{//记录异常。System.err.PrintLInitial SessionFactory创建失败。+ex;抛出新异常InInitializeErrorEx;}在我的userDao:private列表角色中有,对于getter和settryes,但您没有初始化它,请注意最后的新ArrayList。好的,它说异常在UserImp.java:154中。那一行是什么代码?在UserImp.java:154 session.beginTransaction中;因此,session为null。用初始化的代码更新问题把它洗干净。
Exception in thread "main" java.lang.NullPointerException
at blog.com.dao.UserImp.addRolesToUser(UserImp.java:154)
at blog.com.dao.main.main(main.java:37)
private List<Role> roles = new ArrayList<Role>();
public void addRolesToUser(Role roles,UserDao user) {
try{
session.beginTransaction();
roles=new Role();
user=new UserDao();
user.getRoles().add(roles);
session.save(roles);
session.save(user);
session.getTransaction().commit();
}catch(HibernateException e){
session.getTransaction().rollback();
e.printStackTrace();
}
}