Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尝试获取resultset时出现延迟类型异常_Java_Spring_Hibernate - Fatal编程技术网

Java 尝试获取resultset时出现延迟类型异常

Java 尝试获取resultset时出现延迟类型异常,java,spring,hibernate,Java,Spring,Hibernate,我试图通过使用域DAO中的getOrders(字符串域)函数来获取订单 代码如下: Set<Order> orders; orders = domainService.getOrders('google.com'); 服务 领域 @Entity @Table(name="Domain") public class Domain { private Set<Order> ordersDomain = new HashSet<Order>(0);

我试图通过使用域DAO中的getOrders(字符串域)函数来获取订单 代码如下:

Set<Order> orders;
orders = domainService.getOrders('google.com');
服务

领域

@Entity
@Table(name="Domain")
public class Domain {

    private Set<Order> ordersDomain = new HashSet<Order>(0);
    private Set<User> userDomain = new HashSet<User>(0);

    @ManyToMany(fetch=FetchType.LAZY)
    @JoinTable(name="Order_Domain", joinColumns={
            @JoinColumn(name="Order_Domain_Domain_id")
    },inverseJoinColumns={
            @JoinColumn(name="Order_Domain_Order_id", nullable=false,updatable=false)
    })
    public Set<Order> getOrdersDomain() {
        return ordersDomain;
    }
    public void setOrdersDomain(Set<Order> ordersDomain) {
        this.ordersDomain = ordersDomain;
    }
}
public interface DomainService {
    public void saveDomain(Domain domain);
    public void updateDomain(Domain domain);
    public Domain getDomainById(Integer id);
    public void deleteDomain(Integer id);
    public Domain getDomain(String domain);
    public Set<Order> getOrders(String domain);
} 
订单服务实现

@Service
public class DomainServiceImpl implements DomainService {
    private DomainDAO domainDao;
    public DomainDAO getDomainDao() {
        return domainDao;
    }
    public void setDomainDao(DomainDAO domainDao) {
        this.domainDao = domainDao;
    }

    public DomainServiceImpl() {
        // TODO Auto-generated constructor stub
    }
    @Transactional
    public Set<Order> getOrders(String domain) {
        Domain domainAux = this.domainDao.getDomain(domain);
        return domainAux.getOrdersDomain();
    }
}
@Service
public class OrderServiceImpl implements OrderService {

    private OrderDAO orderDAO;

    public OrderDAO getOrderDAO() {
        return orderDAO;
    }
    public void setOrderDAO(OrderDAO orderDAO) {
        this.orderDAO = orderDAO;
    }

    public OrderServiceImpl() {
        // TODO Auto-generated constructor stub
    }
    @Transactional
    public Order getOrderByAdUnit(String adUnitId) {
        return this.orderDAO.getOrderByAdUnit(adUnitId);
    }
}

在Hibernate中,如果延迟加载某个内容,则应在会话可用时加载该内容。会话关闭后,无法加载它(lazy init异常)

在DomainServiceImpl.getDomain方法中,可以这样说:

Hibernate.initialize(domainAux.getOrdersDomain())
如果您的DAO是您的会话边界,请在各自的DAO方法中执行上述操作

@Service
public class DomainServiceImpl implements DomainService {
    private DomainDAO domainDao;
    public DomainDAO getDomainDao() {
        return domainDao;
    }
    public void setDomainDao(DomainDAO domainDao) {
        this.domainDao = domainDao;
    }

    public DomainServiceImpl() {
        // TODO Auto-generated constructor stub
    }
    @Transactional
    public Set<Order> getOrders(String domain) {
        Domain domainAux = this.domainDao.getDomain(domain);
        return domainAux.getOrdersDomain();
    }
}
public interface OrderService {
    public void saveOrder(Order order);
    public void updateOrder(Order order);
    public Order getOrderById(Integer id);
    public void deleteOrder(Integer id);
    public Order getOrderByAdUnit(String adUnitId);
}
@Service
public class OrderServiceImpl implements OrderService {

    private OrderDAO orderDAO;

    public OrderDAO getOrderDAO() {
        return orderDAO;
    }
    public void setOrderDAO(OrderDAO orderDAO) {
        this.orderDAO = orderDAO;
    }

    public OrderServiceImpl() {
        // TODO Auto-generated constructor stub
    }
    @Transactional
    public Order getOrderByAdUnit(String adUnitId) {
        return this.orderDAO.getOrderByAdUnit(adUnitId);
    }
}
Hibernate.initialize(domainAux.getOrdersDomain())