求助:hibernate创建SessionFactory时抛异常

小钻风寻大观园 2017-12-13 08:18:53
各位大神求解答
我用的静态块创建的SessionFactory
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateSession {
private static SessionFactory sf;

static {
Configuration conf=new Configuration().configure();
sf=conf.buildSessionFactory();
}

public static Session openSession() {

return sf.openSession();
}

public static Session getCurrentSession() {

return sf.getCurrentSession();
}

}

执行到调用获取Session的时候抛异常
ognl.MethodFailedException: Method "login" failed for object com.mine.action.LoginAction@67dd7cf6 [java.lang.ExceptionInInitializerError]

原因显示:
Caused by: java.lang.ExceptionInInitializerError

Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]

Caused by: org.hibernate.exception.JDBCConnectionException: Error calling DriverManager#getConnection

不知道初始化配置文件哪里出问题了,还有就是我用@Test测试调用这个静态方法时,又没有出现什么问题
...全文
225 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
谢谢老哥的耐心解答,虽然这样还是出现相同错误 现在问题已经解决了,好像是Tomcat的运行环境的问题,虽然不知道为什么,但是把数据库包复制一份到Tomcat的lib中就解决了 但不知道为啥把Struts2和hibernate分开的时候就不会出现这样的问题
tianfang 2017-12-15
  • 打赏
  • 举报
回复
你的是web项目吗?为什么自己控制SessionFactory ,这个写法是独立java应用(测试程序)才用的方式 直接在使用SessionFactory 的类中,如DAO中注入就是了 @Autowired private SessionFactory sessionFactory; 使用时 Session session = sessionFactory.getCurrentSession()
  • 打赏
  • 举报
回复
引用 1 楼 tianfang 的回复:
web应用中,SessionFactory  注入才行
注入是怎么注入呀,我才开始学hibernate 注入是要在spring的配置文件中注入吗
tianfang 2017-12-14
  • 打赏
  • 举报
回复
web应用中,SessionFactory  注入才行
  • 打赏
  • 举报
回复
@tianfang@u014676576
  • 打赏
  • 举报
回复
请问是说的这样注入吗,还是别的,要是别的的话请问该怎么写,麻烦说详细点
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
	"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
  	<property name="hibernate.connection.drive_class">com.mysql.jdbc.Driver</property>
  	<property name="hibernate.connection.url">jdbc:mysql://localhost:3307/webpro</property>
  	<property name="hibernate.connection.username">root</property>
  	<property name="hibernate.connection.password">1122</property>
  	<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
  	<!-- 可选元素 -->
  	<property name="hibernate.show_sql">true</property>
  	<property name="hibernate.format_sql">true</property>
  	<property name="hibernate.hbm2ddl.auto">update</property>
  	
  	<mapping resource="com/mine/obj/User.hbm.xml"/>
  </session-factory>
</hibernate-configuration>
我诗故我在 2017-12-14
  • 打赏
  • 举报
回复
在配置文件中注入

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧