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();
}