Java Hibernate 4自动删除多对多关系

Java Hibernate 4自动删除多对多关系,java,hibernate,jpa,Java,Hibernate,Jpa,我将hibernate从3.5.6更新到4.10,我的多对多关系有问题: 用户类 Hibernate 4.1将自动删除usersroles表中的用户和角色关系。但是在Hibernate3.6.5中,它没有删除关系 事实上,我根本没有删除任何内容,也没有要求hibernate删除任何内容。可能会发生一些我不理解的事情。如何防止Hibernate删除?还是我做错了什么?你知道你可以这样使用select语句:select DISTINCT u FROM User u join fetch u.role

我将hibernate从3.5.6更新到4.10,我的多对多关系有问题:

用户类

Hibernate 4.1将自动删除usersroles表中的用户和角色关系。但是在Hibernate3.6.5中,它没有删除关系


事实上,我根本没有删除任何内容,也没有要求hibernate删除任何内容。可能会发生一些我不理解的事情。如何防止Hibernate删除?还是我做错了什么?

你知道你可以这样使用select语句:select DISTINCT u FROM User u join fetch u.roles ORDER BY u.username,结果相同?谢谢!它起作用了!当我更改您给我的jpql时。Hibernate不再自动删除用户和角色关系记录。但我仍然有一个问题:如果使用SELECT DISTINCE u从用户u、角色r、用户角色ur中选择DISTINCT u,为什么Hibernate会自动删除该关系,其中u.id=ur.userId和r.id=ur.roleId按u.username排序?
@Entity
@Table(name="user")
public class User {
    @ManyToMany(fetch=FetchType.LAZY)
    @Cascade(value={CascadeType.PERSIST, CascadeType.MERGE,CascadeType.REFRESH}) 
    @JoinTable(name="usersroles", joinColumns = { @JoinColumn(name ="usersroles_user" )}, inverseJoinColumns = { @JoinColumn(name = "usersroles_role") }) 
    @JSON(serialize=false)
    public Set<Role> getRoles() {
        return roles;
    }
}
@Entity
@Table(name="role")
public class Role {  
    @ManyToMany(cascade {CascadeType.REFRESH},fetch=FetchType.LAZY,mappedBy="roles")
    @JSON(serialize=false)
    public Set<User> getUsers() {
        return users;
    }
}
public List<User> getUserAndRoleList() {
    String jpql = "SELECT DISTINCT u FROM User u , Role r, UserRole ur  WHERE u.id = ur.userId AND r.id = ur.roleId ORDER BY u.username";
    QueryResult<User> qr = super.getDataWithOriginalJPQL(jpql);

    userList = qr.getResultList();
    return userList;
}
userList = userService.getUserAndRoleList();
for(int i=0;i<userList.size();i++){
    Iterator<Role> it = userList.get(i).getRoles().iterator();
    Role role ;
}   
userList.get(i).getRoles()