我们正在使用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中的已知错误吗?
答案 0 :(得分:0)
我尝试在上面的代码周围放置一个synchronized
代码块,但仍会发生重复的行。
所以我在表格中添加了一个约束来使列唯一。
dspace=> ALTER TABLE epersongroup2eperson ADD UNIQUE(eperson_group_id, eperson_id);