Что является правильным способом для автоматической проводной сессионной фабрики с весенней загрузкой 2.1 - PullRequest
0 голосов
/ 11 апреля 2020

Я работаю с кодом для Autowire sessionfactory, но, похоже, не работает следующим образом.

Это вызывает следующее исключение:

Caused by: org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'getSessionFactory': Requested bean is currently in creation: Is there an unresolvable circular reference?

В то время как подобный код работает нормально с Spring boot 1.5.X version.

Помогите мне с исправленным кодом или любым другим способом достижения той же цели.

HibernateHelper. java

 @Configuration
    public class HibernateHelper {

        @Autowired
        private EntityManagerFactory emf;

        @Bean
        public SessionFactory getSessionFactory() {
             if (emf.unwrap(SessionFactory.class) == null) {
                    throw new NullPointerException("factory is not a hibernate factory");
                }
                return emf.unwrap(SessionFactory.class);
        }
    }

HibernateOperations. java

 @RestController
    @RequestMapping({"/hbm"})
    public class HibernateOperations {
        @Autowired
        private EmployeeService empService;

        @GetMapping("/emp/get")
        public List<Employee> getEmployees(){
            return empService.readEmployee1();
        }
    }

EmployeeService. java

public interface EmployeeService {
    List<Employee> readEmployee1();
}

EmployeeServiceImpl. java

@Repository
public class EmployeeServiceImpl implements EmployeeService {

    @Autowired
    private SessionFactory  sessionFact;

    @Override
    public List<Employee> readEmployee1(){
        Session session = null;
        try {
            session=sessionFact.openSession();
            session.beginTransaction();
            Query query = session.createQuery("FROM Employee WHERE designation.id=:desgnVal");
            query.setParameter("desgnVal",1L);

            List<Employee> list = query.getResultList();

            return list;
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            session.close();
        }
        return null;
    }
...