读书人

Hibernate 异常:org.hibernate.LazyI

发布时间: 2012-09-07 10:38:15 作者: rapoo

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)

读书人网 >网络基础

热点推荐