Spring 3.0.5 및 Hibernate 3.6.2에서 응용 프로그램을 개발 중이며 현재 JSON 컨트롤러에서 작업하고 있지만이 예외가 있으며 왜 그런 일이 발생하는지 이해할 수 없습니다. 이전에 SO와 Google에서 확인했지만이 문제는 아주 이상합니다.Spring 서비스의 LazyInitializationException
컨트롤러
@RequestMapping(value = "/props", method = RequestMethod.GET)
public @ResponseBody
List<Property> getJsonProps(String id) {
if(id==null)return null;
Device dev = deviceService.getDispositivo(Long.parseLong(id));
List<Property> props = deviceService.listProperties(dev, 10);
return props;
}
장치 서비스
@Service("manageDevices")
@Transactional(readOnly=true,propagation=Propagation.REQUIRED)
public class ManageDevicesImpl implements ManageDevices {
private Logger log = LoggerFactory.getLogger(getClass());
@Autowired
private DevicesDAO devicesDAO;
public List<Property> listProperties(Device dev, Integer qty) {
List<Property> props = devicesDAO.pickProperties(dev, qty);
return props;
}
}
DAO
@Repository("devicesDAO")
public class DevicesDAOImpl implements DevicesDAO {
private Logger log = LoggerFactory.getLogger(getClass());
@Autowired
private SessionFactory sessionFactory;
public List<Property> pickProperties(Device dev, Integer qty) {
if(qty >= 0){
log.debug("Open? "+ sessionFactory.getCurrentSession().isOpen());
log.debug("Tx Active? " + sessionFactory.getCurrentSession().getTransaction().isActive());
List<Property> props = dev.getProperties();
if(props != null){
if(props.size() >= qty)
return props.subList(0, qty-1);
else
return props;
}
}
return null;
}
} 예외가 pickProperties 기능에서 발생
(DAO 레이어 : 그래서 여기 내 코드입니다), (getProperties) 속성을로드하려고하는 줄에. 로그에는 열린 세션과 트랜잭션이 있습니다. 미리 감사드립니다.
답변 해 주셔서 감사합니다. 예외가 던져 질 org.hibernate.LazyInitializationException, 귀하의 게시물을 몇 가지 개념을 명확히하기 때문에 전체 스택 추적을 게시하지 및 그 결과로 내가 서비스 메서드의 논리를 수정합니다 모든 내부에서 수행됩니다 있도록 동일한 거래. – Jairo