休眠,麻烦合并



我试图更新我的数据库中的对象,从我的servlet。然而,它成功运行,没有任何错误,但没有删除。

我的HibernateUtil看起来像:

public class HibernateUtil {
    private static SessionFactory sessionFactory;
    private static final String HIBER = "hibernate.cfg.xml";
    public HibernateUtil() {
        try {
            sessionFactory = new Configuration().addResource(HIBER).configure()
                    .buildSessionFactory();
        } catch (HibernateException ex) {
            System.out.println(ex);
        }
    }
    public SessionFactory getSessionFactory() {
        return sessionFactory;
    }
    public void closeSessionFactory() {
        sessionFactory.close();
    }
}

和我在servlet初始化时实例化上面的类。

@Override
    public void init() {
        hiber = new HibernateUtil();
        System.out.println("Servlet Initialized");
    }

我以前使用过openSession,并且读到对于web应用程序使用getCurrentSession更好,现在我想重新做一遍。

String add = request.getParameter("houseId");
            hiber.getSessionFactory().getCurrentSession();
            Transaction tx = session1.beginTransaction();
            House house = (House) session1.get(House.class, Long.parseLong(add));
            System.out.println(house.getAddress());
            SessionUser.getHouses().add(house);
            session1.merge(SessionUser);        
            tx.commit();
            session1.close();
            System.out.println(house.getAddress());

我编辑我的故障代码与史密斯更简单。我只是不知道为什么这不起作用

请提交事务并关闭会话。

  String add = request.getParameter("Id");
        Session session1 = hiber.getSessionFactory().getCurrentSession();   
        Transaction tx; 
        try {
            tx = session1.beginTransaction();
            for (Iterator<House> iterator = SessionUser.gethouse().iterator(); iterator.hasNext();) {
                House house = iterator.next();
                if (house.getProjectId() == Long.parseLong(add)) {
                    iterator.remove();
                    session1.remove(house);
                    session1.flush();
                }
            }
            session1.merge(SessionUser);
            tx.commit();    
        } catch (Exception e) {
            System.out.println(e);
        } finally {         
            System.out.println("______");
            session1.close();
        }

最新更新