休止状態のセッションで継続的に問題が発生しているため、休止状態のセッションについて多くの質問があります。
Spring 3.1.1 と Hibernate 4.1.3 を使用しています。
最初に、私が取り組んでいるクラス図を示します。
コードクラス:
public class Equipement {
@ManyToOne(fetch = FetchType.LAZY)
@Cascade({CascadeType.SAVE_UPDATE, CascadeType.DELETE})
public getOffice(){
return office ;
}
public class Office {
@ManyToOne(fetch = FetchType.LAZY)
@Cascade({CascadeType.SAVE_UPDATE, CascadeType.DELETE})
public getService(){
return service ;
}
public class Service {
@ManyToOne(fetch = FetchType.LAZY)
@Cascade({CascadeType.SAVE_UPDATE, CascadeType.DELETE})
public getDepartement(){
return departement ;
}
これが私がすべての機器をロードする方法です。
public class HibernateEquipementDao{
@SuppressWarnings("unchecked")
public List<Equipement> getAll() {
return sessionFactory.getCurrentSession().createQuery("from Equipement").list() ;
}
}
にすべての機器をロードし、List<Equipement> allEquipements
たとえば、ビューに一部のサービスまたは一部の部門の機器のみを入力したいとします。
List<Equipement> aListOfEquipements = new ArrayList<Equipement>() ;
for(Equipement equipement : allEquipements)
if(equipement.getOffice().getService().getName().equals("name"))
aListOfEquipements.add(equipement) ;
私はいつでもこれをすることができますか?Currentというセッションは常にアクティブですか? 時々私はその例外を受け取ります。 org.hibernate.LazyInitializationException: プロキシを初期化できませんでした - セッションがありません
私の EquipementDao が使用する現在のセッションはどこですか?
機器の部門を取得したいときにセッションを開く方法はありますか?
または、続行する別の方法がありますか?セッションを管理する方法と、すべての機器をロードして問題なく他のエンティティにアクセスする方法は?