Я работаю с кодом для 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;
}