Мы используем spring и hibernate в нашем приложении, я создаю объект LocalSessionFactoryBean, а затем @autowire SessionFactory в репозитории следующим образом: создайте LocalSessionFactoryBean в AppConfig
@EnableCaching
@EnableAsync
@EnableTransactionManagement
@Configuration
class AppCOnfig extends WebMvcConfigurerAdapter{
@Bean
public LocalSessionFactoryBean sessionFactory() {
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(restDataSource());
sessionFactory.setPackagesToScan("com.xx.yyy");
sessionFactory.setHibernateProperties(hibernateProperties());
sessionFactory.setPhysicalNamingStrategy(new SnakeCaseNamingStrategy());
sessionFactory.setImplicitNamingStrategy(new ImplicitNamingStrategyLegacyHbmImpl());
return sessionFactory;
}
}
В репозитории Мы используем аннотацию @autowire как
@Slf4j
@Repository
public class UserRepository {
@Autowired
private SessionFactory sessionFactory;
}
Мы используем спящий и весенний версии, как показано ниже:
4.3.4.RELEASE
5.2.10.Final
Но когда я запускаю приложение, я получаю эту ошибку:
Error creating bean with name 'sessionFactory' defined in XXX.AppConfig: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.orm.hibernate5.LocalSessionFactoryBean]: Factory method 'sessionFactory' threw exception; nested exception is java.lang.ArrayStoreException: sun.reflect.annotation.EnumConstantNotPresentExceptionProxy
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:599)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1128)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1022)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:512)
Я знал, что есть какая-то проблема, когда Spring пытался получить фабрику сессий от localeSessionFactoryBean, но не могу понять, как мы можем ее решить. Если у кого-то есть какие-то идеи по этому поводу, пожалуйста, помогите мне.