Spring服务中的LazyInitializationException

| 我正在Spring 3.0.5和Hibernate 3.6.2中开发应用程序,目前我正在JSON控制器中工作,但是我有此异常,我无法理解为什么会发生这种情况。我之前已经在SO和Google中进行过检查,但是这个问题很奇怪。所以这是我的代码: 控制者
@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; 
    }
}
@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;
}
} 在我尝试加载属性(getProperties)的那一行中,在pickProperties函数(DAO层)中发生了异常。在日志中,有一个打开的会话和事务。提前致谢。     
已邀请:
        您能否发布确切的例外情况? 您正在
dev.getProperties()
行进行交易,但未载入
dev
行。您可能需要重新连接它,或安排仍在装入它的事务中时调用
dev.getProperties()
,或者向上移动事务边界以使两个调用都在同一事务中,或者更改Hibernate配置,以便
properties
不是延迟加载的,或者更改加载
dev
的代码,以便在HQL中获取
properties
。 哪种选择适用于您取决于您​​的情况,但我将从最后一个开始。     
        看起来您的交易是在读取ѭ9之后创建的。尝试在事务中读取/重新读取它,以查看会发生什么。     

要回复问题请先登录注册