簡體   English   中英

如何在 Spring 中將 SessionFactory 自動裝配到 Repository 類

[英]How to autowire SessionFactory to a Repository class in Spring

有人可以幫我將SessionFactory自動連接到SpringRepository類嗎? 以下代碼給了我這個錯誤。 任何克服這個問題的建議。 我在 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM