Một người bạn của tôi đã gặp sự cố đặc biệt trong phần mềm nguồn mở OscarMcmaster
. Anh ấy yêu cầu tôi giúp đỡ và tôi có thể nhận được mã gây ra vấn đề. Sau đây là một phương pháp:org.hibernate.HibernateException: bộ sưu tập không được liên kết với bất kỳ phiên nào
public BillingService getBillingCodeByCode(String code){
List list = billingServiceDao.findBillingCodesByCode(code,"BC");
if(list == null || list.size() ==0){
return null;
}
return (BillingService) list.get(0);
}
các billingServiceDao
được khởi tạo bởi Spring
container:
private static BillingServiceDao billingServiceDao =
(BillingServiceDao) SpringUtils.getBean("billingServiceDao");
Trong BillingServiceDao
lớp mã sau đây được thực hiện:
public List<BillingService> findBillingCodesByCode(String code, String region) {
Query query = entityManager.createQuery("select bs from....");
query.setParameter("code", code + "%");
query.setParameter("region", region);
@SuppressWarnings("unchecked")
List<BillingService> list = query.getResultList();
return list;
}
Thủ phạm chính là query.getResultList();
nhưng tôi m từ vũ trụ khác (.Net) và không biết biện pháp khắc phục cho vấn đề.
Hãy giúp tôi giúp bạn tôi giải quyết vấn đề này.
EDIT: - Stack Trace
SEVERE: Servlet.service() for servlet action threw exception
org.hibernate.HibernateException: collection is not associated with any session
at org.hibernate.collection.AbstractPersistentCollection.forceInitialization(AbstractPersistentCollection.java:449)
at org.hibernate.engine.StatefulPersistenceContext.initializeNonLazyCollections(StatefulPersistenceContext.java:797)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:241)
at org.hibernate.loader.Loader.doList(Loader.java:2220)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
at org.hibernate.loader.Loader.list(Loader.java:2099)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:66)
at org.oscarehr.common.dao.BillingServiceDao.findBillingCodesByCode(BillingServiceDao.java:47)
at org.oscarehr.common.dao.BillingServiceDao$$FastClassByCGLIB$$f613fb7e.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)
Liên kết này có thể giúp bạn: http://stackoverflow.com/questions/8292820/org-hibernate-lazyinitialization-exception –