Java Hibernate.initialize(obj)异常

Java Hibernate.initialize(obj)异常,java,hibernate,Java,Hibernate,我有两个相关课程: class City { @OneToMany( mappedBy = "city" ) private List<Place> places; } class Place { @ManyToOne private City city; } 鉴于此,我将得到如下结果: City1 - Place1 - Place2 - Place3 - .. City2 -Place1 -Place2 - ... 但我有一个例外

我有两个相关课程:

class City
{
    @OneToMany( mappedBy = "city" )
    private List<Place> places;
}

class Place
{
    @ManyToOne
    private City city;
}
鉴于此,我将得到如下结果:

City1
 - Place1
 - Place2
 - Place3
 - ..
City2
 -Place1
 -Place2
 - ...
但我有一个例外:

org.hibernate.HibernateException: collection is not associated with any session
当我使用FetchType.EAGER而不是LAZY时,它工作得很好(当然没有Hibernate.initialize())

我做错了什么

编辑:

因此,在服务层中我必须有两种方法:

public List<City> getAllTCitiesWithPlaces()
{
        List<City> cities = citiesDao.getAll();
        for ( City city : cities )
            Hibernate.initialize(city.getPlaces());
        return cities;
}
public List getAllTCitiesWithPlaces()
{
List cities=citiesDao.getAll();
用于(城市:城市)
初始化(city.getPlaces());
回归城市;
}

public List getAllTCitiesWithoutPlaces()
{
返回citiesDao.getAll();
}
是吗


谢谢你,兄弟

发生此问题是因为当您在controller类中获取位置时,
会话
已关闭,并且城市实体已从会话中分离

调用Hibernate.initialize(city.getPlaces())与获取城市的方法相同

public List<City> getAllTCitiesWithPlaces()
{
        List<City> cities = citiesDao.getAll();
        for ( City city : cities )
            Hibernate.initialize(city.getPlaces());
        return cities;
}
public List<City> getAllTCitiesWithoutPlaces()
{
       return citiesDao.getAll();
}