【发布时间】:2018-01-15 00:19:45
【问题描述】:
@Configuration
@EnableTransactionManagement
@ComponentScans(value = {
@ComponentScan("org.kalifornia.fridgeapp.DAO"),
@ComponentScan("org.kalifornia.fridgeapp.service")
} )
@PropertySource("classpath:mysql.properties")
public class HibernateConfig {
@Autowired
private ApplicationContext context;
@Autowired
private Environment env;
@Bean
public LocalSessionFactoryBean getSessionFactory()
{
LocalSessionFactoryBean factoryBean = new LocalSessionFactoryBean();
try
{
factoryBean.setHibernateProperties(hibernateProperties());
factoryBean.afterPropertiesSet();
factoryBean.setDataSource(restDataSource());
factoryBean.setAnnotatedClasses(FridgeUser.class);
factoryBean.setAnnotatedClasses(Community.class);
factoryBean.setAnnotatedClasses(Container.class);
factoryBean.setAnnotatedClasses(Item.class);
factoryBean.setAnnotatedClasses(Product.class);
} catch(IOException exception) {
System.out.print(exception.fillInStackTrace());
return null;
}
return factoryBean;
}
@Bean
public DataSource restDataSource() {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/fridge");
dataSource.setUsername("root");
dataSource.setPassword("kaszanka");
return dataSource;
}
@Bean
public HibernateTransactionManager getTransactionManager() {
HibernateTransactionManager transactionManager = new HibernateTransactionManager();
transactionManager.setSessionFactory(getSessionFactory().getObject());
return transactionManager;
}
Properties hibernateProperties() {
return new Properties() {
{
setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect");
setProperty("show_sql", "true");
setProperty("hibernate.hbm2ddl.auto", "update");
}
};
}
}
我从教程中编写了该代码,现在可以使用,但是当我尝试将 hbm2ddl.auto 从创建更改为更新时,我收到此错误:
$Exception in thread "main" org.springframework.beans.factory.UnsatisfiedDependencyException: 创建名为 'DAOImpl' 的 bean 时出错:通过字段 'sessionFactory' 表达的依赖关系不满足;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建 org.kalifornia.fridgeapp.spring.config.HibernateConfig 中定义的名称为“getSessionFactory”的 bean 时出错:调用 init 方法失败;嵌套异常是 java.lang.UnsupportedOperationException:BasicDataSource 不支持
【问题讨论】:
-
forum.spring.io/forum/spring-projects/data/… 尝试使用不同的数据源
标签: java spring hibernate spring-mvc