j2EE学习之hibernate—常见错误集锦

1.java.lang.ClassCastException: org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction cannot be cast to javax.transaction.Transaction

问题:ssh框架web项目中Transaction发生转换异常

解决:当时sessionfactory不可用,必须用session才能使用这段代码所以要开启一级缓存,但是不知道Transaction应用的是 org.hibernate.Transaction还是import javax.transaction.Transaction;导致了这个异常换了下导入的包就可以了。


2.org.hibernate.service.UnknownServiceException: Unknown service requested [or

问题:发现是调用的两个方法,都要开启 sessionFactory .

解决:SessionFactory 重用

public class MyHibernateSessionFactory {

    private final static Configuration configuration = new Configuration().configure();
    private final static ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
    private final static SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);

    private MyHibernateSessionFactory() {
    }

    public static Session getSession() {
        return sessionFactory.openSession();
    }

    private static class SingletonHolder {
        private final static MyHibernateSessionFactory INSTANCE = new MyHibernateSessionFactory();
    }

    public static MyHibernateSessionFactory getInstance() {
        return SingletonHolder.INSTANCE;
    }

}

在外部重新定义,然后在方法中调用

public Users SearchUser() {
        Session session = MyHibernateSessionFactory.getSession();
        Transaction tx = session.beginTransaction();
       

       try{

          //do something

       }catch(Exception ex){

       //do something; 

       }finally{

          tx = null;   
          session.close();
        }
    }


原文:https://blog.csdn.net/swingyaoye/article/details/50689545 
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值