首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

Hibernate 异常:org.hibernate.LazyInitializationException: failed to lazily initial

2012-09-07 
Hibernate 错误:org.hibernate.LazyInitializationException: failed to lazily initial有两张多对多关联

Hibernate 错误:org.hibernate.LazyInitializationException: failed to lazily initial
有两张多对多关联表:

@Entity@AccessType("field")@Table(name="ROLE")public class Role implements Serializable {private static final long serialVersionUID = 1L;@Id@Column(name="role_id")private Long roleId;@Column(name="role_Name")private String roleName;/**      * 角色-菜单关联       */      @ManyToMany(cascade={CascadeType.PERSIST, CascadeType.MERGE}, fetch=FetchType.LAZY)@JoinTable(name = "ROLE_MENU", joinColumns = { @JoinColumn(name = "role_id") }, inverseJoinColumns = { @JoinColumn(name = "menu_id") })      private Set<Menu> menus = new LinkedHashSet<Menu>();    public Set<Menu> getMenus() {return menus;}public void setMenus(Set<Menu> menus) {this.menus = menus;}}


注意:一定要两张表分别@JoinTable(name = "ROLE_MENU")

在Role在引用menus的时候,报:org.hibernate.LazyInitializationException: failed to lazily initial

解决办法:roleDao.getHibernateTemplate().initialize(role.getMenus());


当关联表中不存在此记录时,role.getMenus();将会报错:org.hibernate.ObjectNotFoundException: No row with the given identifier exists:

解决办法:加上 @NotFound(action = NotFoundAction.IGNORE)

热点排行