我在我的程序中使用了hibernate注释,但是它出现了错误。
它不返回我打开的会话工厂。我使用netbeans IDE,当我调试我的程序时,它想要打开一个会话和下一步,它将转到InvocationTargetException.java
,而不是其他任何东西。
这是我的文件夹
这是我的hibernate util
public class HibernatUtil {
private static final SessionFactory FACTORY;
static {
FACTORY = new AnnotationConfiguration().configure("/hibernate.cfg.xml").buildSessionFactory();
}
public static SessionFactory getSessionFactory() {
return FACTORY;
}
}
我的班级是获得会话工厂,但是收到错误
public class UserDAO {
private Session session;
public boolean insert(User user){
session=HibernatUtil.getSessionFactory().getCurrentSession();
Transaction transaction=null;
String result;
try{
transaction=session.beginTransaction();
session.save(user);
transaction.commit();
result="your insert was sucssedfull";
}
catch(Exception e ){
result="your transaction was faild";
if (transaction!=null) transaction.rollback();
}
System.out.println(result);
return transaction!=null ;
}
}
然后在下一步之后也去了这个班级
答案 0 :(得分:1)
请尝试使用此HibernateUtil:
public class HibernateUtil {
public static final SessionFactory sessionFactory = buildSessionFactory();
private static SessionFactory buildSessionFactory() {
try {
// create the SessionFactory from hibernate.cfg.xml
return new Configuration().configure().buildSessionFactory();
} catch (Throwable ex) {
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
并在您的userDao中使用此:
private final SessionFactory sessionFactory = HibernateUtil.sessionFactory.getCurrentSession();