xyz*_*442 6 java configuration spring persistence hibernate
我正在尝试Hibernate 4.0.0.FINAL与Spring 3.1.0.RELEASE
使用集成@Configuration.
之后,出现此问题:
BeanCreationException: Error creating bean with name 'alertsSessionFactoryBean'
NoSuchMethodError: org.hibernate.cfg.annotations.reflection.XMLContext$Default.getDelimitedIdentifier()Ljava/lang/Boolean;
Run Code Online (Sandbox Code Playgroud)
这是我的PersistenceHibernateConfig档案
@Configuration
@EnableTransactionManagement
public class PersistenceHibernateConfig {
@Value("${jdbc.driverClassName}")
private String driverClassName;
@Value("${jdbc.url}")
private String url;
@Value("${hibernate.dialect}")
String hibernateDialect;
@Value("${hibernate.show_sql}")
boolean hibernateShowSql;
@Value("${hibernate.hbm2ddl.auto}")
String hibernateHbm2ddlAuto;
@Bean
public LocalSessionFactoryBean alertsSessionFactoryBean() {
final LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(this.restDataSource());
sessionFactory.setPackagesToScan(new String[]{"com.cloudlb"});
sessionFactory.setHibernateProperties(this.hibernateProperties());
return sessionFactory;
}
@Bean
public DataSource restDataSource() {
final DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(this.driverClassName);
dataSource.setUrl(this.url);
dataSource.setUsername("test");
dataSource.setPassword("1234");
return dataSource;
}
@Bean
public HibernateTransactionManager transactionManager() {
final HibernateTransactionManager txManager = new HibernateTransactionManager();
txManager.setSessionFactory(this.alertsSessionFactoryBean().getObject());
return txManager;
}
@Bean
public PersistenceExceptionTranslationPostProcessor exceptionTranslationPostProcessor() {
return new PersistenceExceptionTranslationPostProcessor();
}
@Bean
public PersistenceExceptionTranslator exceptionTranslator() {
return new HibernateExceptionTranslator();
}
final Properties hibernateProperties() {
return new Properties() {
{
this.put("persistence.dialect", PersistenceHibernateConfig.this.hibernateDialect);
this.put("hibernate.hbm2ddl.auto", PersistenceHibernateConfig.this.hibernateHbm2ddlAuto);
this.put("hibernate.show_sql", PersistenceHibernateConfig.this.hibernateShowSql);
}
};
}
}
Run Code Online (Sandbox Code Playgroud)
我认为这可能是LocalSessionFactoryBean的一个问题,但我无法理解什么是错的.我可能会遗漏一些东西.
我发现它是因为缺少hibernate-annotation.jar,如果它是3.x不知道为什么在4.0中注释:org.hibernate.cfg.annotations.reflection.XMLContext在hibernate-core jar文件中它还是错误.
先感谢您
好的这听起来很像你在提供所有必需依赖项的兼容版本时遇到问题.这里有一些关于可能出错的想法:
听起来你并不是在使用Maven或类似的东西来管理你的依赖项.强烈建议使用自动工具来管理依赖项,因为手动提供所有必需的依赖项非常困难/容易出错.这就是说,你应该能够下载包含所有需要的jar zip文件发布在这里.这是你做的吗?
Hibernate核心依赖于hibernate-commons-annotations.jar.所有在hibernate-annotations中的注释现在已经在核心jar中存在了一段时间.所以你需要hibernate-commons-annotations.jar而不是hibernate-annotations.jar