我正在学习hibernate/springmvc,启动服务器时出现了一个异常。我在intellij中工作,这个数据库连接到我的ide并且工作得很好(同样“test connection”也可以),但是当我试图在配置文件中创建bean时,它根本不工作。有什么问题吗?
@Configuration
@EnableTransactionManagement
@ComponentScan("com.packt.webstore")
public class RootApplicationContextConfig {
@Bean
public DataSource getDataSource() {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setUsername("root");
dataSource.setPassword("root");
dataSource.setUrl("jdbc:mysql://localhost:3306/shop");
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
return dataSource;
}
@Bean
public LocalSessionFactoryBean getSessionFactory() {
LocalSessionFactoryBean factoryBean = new
LocalSessionFactoryBean();
factoryBean.setDataSource(getDataSource());
Properties props = new Properties();
props.put("hibernate.show_sql", "true");
props.put("hibernate.hbm2ddl.auto", "update");
props.put("hibernate.dialect",
"org.hibernate.dialect.MySQLDialect");
factoryBean.setHibernateProperties(props);
factoryBean.setPackagesToScan("com.packt.webstore");
return factoryBean;
}
@Bean
public HibernateTransactionManager getTransactionalManager() {
HibernateTransactionManager transactionManager = new
HibernateTransactionManager();
transactionManager.setSessionFactory(getSessionFactory()
.getObject());
return transactionManager;
}
}
异常日志:
Error creating bean with name 'productController': Unsatisfied
dependency expressed through field 'productService': Error creating
bean with name 'productServiceImpl': Unsatisfied dependency expressed
through field 'products': Error creating bean with name
'productDaoImpl': Unsatisfied dependency expressed through field
'factory': Error creating bean with name 'getSessionFactory' defined in
com.packt.webstore.config.RootApplicationContextConfig: Invocation of
init method failed; nested exception is
org.hibernate.exception.GenericJDBCException: Unable to open JDBC
Connection for DDL execution;
2条答案
按热度按时间mftmpeh81#
无法打开jdbc连接以执行ddl
告诉你不
Connection
可以在执行代码时建立到配置的数据库。这可能是由许多原因造成的,因此我只列出最可能的原因:mysql根本没有运行。
是你开始的吗?通过检查正在运行的进程列表进行验证(取决于操作系统)。
mysql没有监听默认端口3306。
你改了吗?如果是这样,请相应地更改代码/配置。
假设mysql正在运行和侦听(端口3306),则用户root的密码不是
root
.你把密码设置为
root
? 使用这些凭据通过mysql cli本地连接。如果可以,您可以排除密码不匹配的情况。用户
root
缺少连接到名称为的数据库的权限shop
.您是否更改了用户的权限
root
限制访问shop
数据库?如果是,请检查和/或更改此用户对本地连接的权限(授予)。希望这张清单有用。
更新-1
取决于
mysql-connector.jar
,您必须仔细检查/选择驱动程序类的名称:mysql连接器/j 5.x
jdbc.driver\u class=>
com.mysql.jdbc.Driver
mysql连接器/j 6.x+jdbc.driver\u class=>
com.mysql.cj.jdbc.Driver
mi7gmzs62#
改为Hibernate5和MySQL5.1.39