[英]How to autowire SessionFactory to a Repository class in Spring
有人可以幫我將SessionFactory
自動連接到Spring
的Repository
類嗎? 以下代碼給了我這個錯誤。 任何克服這個問題的建議。 我在 StackOverflow 中檢查了許多類似的主題,但沒有一個成功。
“創建名為 'appointmentController' 的 bean 時出錯:通過字段 'iFactory' 表示的依賴項不滿足:創建名為 'appointmentFactory' 的 bean 時出錯:通過字段 'factory' 表示的依賴項不滿意:找不到 [org.hibernate.SessionFactory] 類型的合格 bean對於依賴...等”
存儲庫類
@Repository
@ComponentScan({"org.hibernate.SessionFactory"})
public class AppointmentFactory {
@Autowired
private SessionFactory factory ;
public SessionFactory getFactory() {
return factory;
}
public void setFactory(SessionFactory factory) {
this.factory = factory;
}
}
控制器類
@RestController
@ComponentScan({"com.mobios.ep.services","com.ombios.ep.entity.factory")
public class AppointmentController {
@Autowired
private AppointmentService iService;
@Autowired
private AppointmentFactory iFactory;
@RequestMapping(value="appointment/get", method=RequestMethod.POST)
public AppoinmentWM getApointmentById(@RequestBody AppointmentReq appointment) throws Exception{
Log4JUtil.logger.info("APPOINTMENT,appointment_get_request,Request="+appointment.toString());
AppointmentService appoinmentService = new AppointmentService();
StatsService statsService = new StatsService();
Mapper mapper = new Mapper();
AppoinmentWM gotAppointment = null;
}
嘗試以下
@Autowired
private Environment env;
@Autowired
DataSource dataSource;
@Bean(name = { "sessionFactory" })
public LocalSessionFactoryBean sessionFactory() {
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
sessionFactory.setPackagesToScan(new String[] { "com.mypackage.my.entities" });
sessionFactory.setHibernateProperties(hibernateProperties());
return sessionFactory;
}
@Bean
public HibernateTransactionManager transactionManager() {
final HibernateTransactionManager txManager = new HibernateTransactionManager();
txManager.setSessionFactory(sessionFactory().getObject());
return txManager;
}
Properties hibernateProperties() {
return new Properties() {
{
// @formatter:off
setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto"));
setProperty("hibernate.dialect", env.getProperty("hibernate.dialect"));
setProperty("hibernate.globally_quoted_identifiers", env.getProperty("hibernate.dialect"));
}
};
}
要么
@Configuration
public class DataConfigTest {
@Autowired
EntityManagerFactory entityManagerFactory;
//@Autowired
//HibernateJpaSessionFactoryBean hibernateJpaSessionFactoryBean;
@Autowired
HibernateEntityManagerFactory hemf;
@Autowired
DataSource dataSource;
@Bean(name = { "sessionFactory" })
public SessionFactory sessionFactory() {
return hemf.getSessionFactory();
// HibernateJpaSessionFactoryBean factory = new
// HibernateJpaSessionFactoryBean();
// factory.setEntityManagerFactory(entityManagerFactory);
// return factory.getObject();
}
@Bean
public HibernateTransactionManager transactionManager() {
final HibernateTransactionManager txManager = new HibernateTransactionManager();
txManager.setSessionFactory(sessionFactory());
return txManager;
}
}
我認為在構造函數中,但我目前也在為此而苦苦掙扎
public AppointmentFactory(@Qualifier("mySessionFactory") SessionFactory sessionFactory){
super.setSessionFactory(sessionFactory);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.