有User和Role2张表
他们之间的关系是多对多,采用annotation进行配置
User类关键代码:
    @ManyToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
    @JoinTable(name="user_role",joinColumns={@JoinColumn(name="user_id")},inverseJoinColumns={@JoinColumn(name="role_id"})
    public Set<Role> getRoles(){..}Role类关键代码
        @ManyToMany(mappedBy="roles",cascade=CascadeType.ALL,fetch=FetchType.LAZY)
    public Set<User> getUsers(){...}
启动后产生了user,role,user_role三张表添加了几条对应数据后执行下列代码时出现问题
User user = userService.load(1);//生成ID号为1的User对象
Set<Role> roles = user.getRoles();//这句执行时出现问题
Hibernate打印的SQL语句如下
delete from user_role where user_id=?
insert into user_role(user_id,role_id)values(?,?)并且会造成原来级联关系丢失,没有了之前的多对多关系
比如有User u1,u2他们分别拥有Role r1,r2的角色属性
当执行完某个User的getRoles()方法后,就变成u1对r1,u2对r2的单对单关系了网上也有人碰到类似的问题,但是都没解决方案,求高手