2017-12-07 5 views
0

SessionFactoryRepositoryクラスへのオートワイヤリングを手伝ってもらえますか?Spring?次のコードは私にこのエラーを与えます。この問題を克服するための提案。私はStackOverflowで多くの似たようなトピックをチェックしましたが、どれも成功しませんでした。SpringのRepositoryクラスにSessionFactoryをオートワイヤリングする方法

「エラー名 『appointmentController』を持つBeanの作成:名前の 『appointmentFactory』豆 作成エラー: 依存性がフィールドを介して 『IFactoryです』表現不満のない予選豆:不満依存関係は、フィールド 『工場』を介して を表明し依存関係のために見られるタイプ [org.hibernate.SessionFactory] ​​...など」

リポジトリクラス

@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; 
     } 
    } 

Controllerクラス

@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; 

    } 
+0

を試してみてください?多分entityManagerが代わりに定義されているでしょうか? –

+0

このアプリケーションでは、3つのプロジェクトがあります。 1つのプロジェクトはコントローラを含むspringプロジェクト(epWeb)です。 1つのJavaプロジェクトにはサービス(epService)があります。また、別のJavaプロジェクト(epEntity)には、データベースに接続するために休止状態を使用するリポジトリがあります。 Springプロジェクトは、サービスとリポジトリプロジェクトの両方に依存します。 –

答えて

0

どのようにあなたがのSessionFactoryを設定しなかった次

 @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; 
    } 
} 
+0

epEntityプロジェクトには、DBアクセス用のリポジトリクラスがあります。だから、どうすればこのコードを使うことができますか? –

関連する問題