Hibernate JPA多个单向映射更新问题

Hibernate JPA多个单向映射更新问题,hibernate,jsf,jpa,Hibernate,Jsf,Jpa,我有两个类组和权限,当我尝试向组添加新权限时,组有一个权限列表。我设置了新的权限列表并成功提交,但数据库没有更新。我使用jpa 1(hibernate作为提供程序)。我正在为entitymanager(而不是jta)创建请求。我的托管bean请求范围(a4j:keepalive)我尝试了一下定位错误,但没有成功 1-获取要编辑的当前组作为从组g中选择g join fetch g.permissions,其中g.id=:id,如果它是权限列表()的延迟获取的结果 2-从数据库刷新列表中的所有权限,

我有两个类组和权限,当我尝试向组添加新权限时,组有一个权限列表。我设置了新的权限列表并成功提交,但数据库没有更新。我使用jpa 1(hibernate作为提供程序)。我正在为entitymanager(而不是jta)创建请求。我的托管bean请求范围(a4j:keepalive)我尝试了一下定位错误,但没有成功

1-获取要编辑的当前组作为从组g中选择g join fetch g.permissions,其中g.id=:id,如果它是权限列表()的延迟获取的结果

2-从数据库刷新列表中的所有权限,然后合并组

public class GroupEditorBean extends AbstractGroupBean {
    private static final long serialVersionUID = -7454051588934099916L;



    @PostConstruct
    public void init() {
        this.group=  groupAccessor.findGroup(Long.valueOf(getParameter("group")));
        perms =  this.group.getPermIdList();
    }


    public String save() {
        if(group.isRoot()){
            addError("Root  group can not be updated");
            return "";
        }
       List<Permission> permissions=   convertToPermission(perms);
        this.group.setPermissions(permissions);
        groupAccessor.merge(group);
        logger.log(String.format("Updated group %s", group.getName()), "group",
                Log.Severity.INFO);

        return "modules/user/groups.xhtml";
    }







@Entity
@Table(name = "GROUPS")
public class Group implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "GID")
    private Long id;



    @ManyToMany(cascade={CascadeType.MERGE,CascadeType.PERSIST,CascadeType.REFRESH})
    @JoinTable(name = "GROUP_PERMISSION", joinColumns = @JoinColumn(name = "GID"), inverseJoinColumns = @JoinColumn(name = "PID"))
    private List<Permission> permissions;





@Entity
@Table(name = "PERMISSIONS")
public class Permission implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "PID")
    private Long id;

    @NotNull
    @Column(name = "READABLE_ID", unique = true)
    private String readableId;
公共类GroupEditorBean扩展了AbstractGroupBean{
私有静态最终长serialVersionUID=-745405158893934099916L;
@施工后
公共void init(){
this.group=groupAccessor.findGroup(Long.valueOf(getParameter(“group”)));
perms=this.group.getPermIdList();
}
公共字符串保存(){
if(group.isRoot()){
addError(“无法更新根组”);
返回“”;
}
列表权限=convertToPermission(perms);
this.group.setPermissions(权限);
groupAccessor.merge(组);
logger.log(String.format(“更新的组%s”,group.getName()),“组”,
Log.Severity.INFO);
返回“modules/user/groups.xhtml”;
}
@实体
@表(name=“GROUPS”)
公共类组实现可序列化{
私有静态最终长serialVersionUID=1L;
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
@列(name=“GID”)
私人长id;
@ManyToMany(cascade={CascadeType.MERGE,CascadeType.PERSIST,CascadeType.REFRESH})
@JoinTable(name=“GROUP\u PERMISSION”,joinColumns=@JoinColumn(name=“GID”),inverseJoinColumns=@JoinColumn(name=“PID”))
私有列表权限;
@实体
@表(name=“权限”)
公共类权限实现可序列化{
私有静态最终长serialVersionUID=1L;
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
@列(name=“PID”)
私人长id;
@NotNull
@列(name=“READABLE\u ID”,unique=true)
私有字符串可读ID;

JPA 1与孤立实体有问题,hibernate的JPA-1实现jar有一些额外的错误。将list设置为null可以解决我在这种情况下的问题。我希望JPA-2可以解决这个问题。

如果我将权限列表设置为null并在更新组之前合并,则成功。但我认为这是一个错误。