JPA проблема обновления множества однонаправленных карт - PullRequest
0 голосов
/ 22 июня 2011

У меня есть два класса Group и Permission, у Group есть список Permission, когда я пытаюсь добавить новое разрешение в группу. Я устанавливаю новый Список полномочий и фиксирую успешно, но обновление не происходит в базе данных. Я использую jpa 1 (hibernate как провайдер). Я создаю запрос для управления данными (не jta). Моя область запроса управляемого бина (a4j: keepalive), и я пробую это для определения местоположения ошибки, но не успешно.as Выберите g из группы g. Получить выборку 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;

1 Ответ

0 голосов
/ 06 января 2012

JPA 1 имеет проблемы с потерянными сущностями, а jar реализации JPA-1 hibernate имеет некоторые дополнительные ошибки. Установка списка в null решит мою проблему для этого случая. Я надеюсь, что JPA-2 решит эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...