【问题标题】:Hibernate error when hbm2ddl.auto is update更新 hbm2ddl.auto 时出现休眠错误
【发布时间】: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 不支持

【问题讨论】:

标签: java spring hibernate spring-mvc


【解决方案1】:

根据您的日志nested exception is java.lang.UnsupportedOperationException: Not supported by BasicDataSource 似乎是 BasicDataSource 的问题,请尝试将其更改为 DriverManagerDataSource,因为 BasicDataSource 可能不支持 hibernate.hbm2ddl.auto = update

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-31
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 2011-12-09
    • 2019-07-12
    • 1970-01-01
    相关资源
    最近更新 更多