dspace在epersongroup2eperson中重复行

时间:2015-06-16 03:26:49

标签: dspace

我们正在使用dspace 3.2并添加了我们自己的身份验证类。只要第一次用户生成会话,就会调用此身份验证类。在代码内部,我们会查找用户,如果他们不属于该群组,则会将其添加到群组中。

EPerson eperson = EPerson.findByEmail(context, email);
if (eperson != null) {
    for (Group group : Group.findAll(context, Group.ID)) {
        if (!group.isMember(eperson)) {
            group.addMember(eperson);
            group.update();
            context.commit();
        }
    }
}

当有多个会话同时运行并将该人员添加到该组时,会出现此问题。这会导致epersongroup2eperson表中的重复行条目

dspace=> select * from epersongroup2eperson;
id  | eperson_group_id | eperson_id
-----+------------------+------------
 1 |                3 |         10
 2 |                3 |         10

这是dspace中的已知错误吗?

1 个答案:

答案 0 :(得分:0)

我尝试在上面的代码周围放置一个synchronized代码块,但仍会发生重复的行。 所以我在表格中添加了一个约束来使列唯一。

dspace=> ALTER TABLE epersongroup2eperson ADD UNIQUE(eperson_group_id, eperson_id);