Tôi đang cố gắng truy cập vào nhà máy phiên Hibernate nhưng tôi nhận được lỗi sau tại dòng được đề cập.Truy cập SessionFactory từ Ứng dụng Khởi động Mùa xuân
No CurrentSessionContext configured!
đang
@Service
@Transactional
public class GenericSearchImpl implements GenericSearch {
@Autowired
private EntityManagerFactory entityManagerFactory;
@Override
@SuppressWarnings("unchecked")
public <T> List<T> search(final Class<T> type, final String[] criteriaList, final int page, final int perPage) {
Session session = getSession();
...
}
public Session getSession() {
final HibernateEntityManagerFactory emFactory = (HibernateEntityManagerFactory) entityManagerFactory;
final SessionFactory sessionFactory = emFactory.getSessionFactory();
return sessionFactory.getCurrentSession(); //ERROR No CurrentSessionContext configured!
//This worked but I understand it to be BAD as spring should be managing open sessions.
// try {
// return sessionFactory.getCurrentSession();
// } catch (Exception e) {
// return sessionFactory.openSession();
// }
}
...
}
Bất cứ ý tưởng tại sao?
JPA không sử dụng lớp 'CurrentSessionContext'. Cấu hình nó sẽ giải quyết vấn đề của bạn. Chỉ cần thêm cấu hình cho ngữ cảnh phiên hiện tại và để nó trỏ đến lớp 'org.springframework.orm.hibernate4.SpringSessionContext'. Tuy nhiên tại sao bạn lại thử điều này? Tại sao không sử dụng JPA đơn giản? –
@ M.Deinum Tôi đang làm điều này để hỗ trợ một số mã di sản đang sử dụng Tiêu chí Hibernate. Nó cuối cùng sẽ được chuyển đổi sang JPA. Phần còn lại của ứng dụng đang sử dụng spring-data-jpa, tôi chỉ cần tạm thời Hibernate SessionFactory cho đến khi nó có thể được viết lại. Liệu một phương pháp lai giống như công việc này? Bạn có thể đưa ra một ví dụ về cấu hình CurrentSessionContext như một bean mùa xuân trong cấu hình java? – jax
Có phải [this] (http://stackoverflow.com/questions/26667910/no-currentsessioncontext-configured?answertab=active#tab-top) ý của bạn là gì? – jax