【发布时间】:2021-03-26 10:51:59
【问题描述】:
我有一个实体用户,它与实体组织有 WORKS_FOR 关系。组织与其中的所有用户都有关系 HAS_EMPLOYEE 和关系 HAS_ANCHOR,整个组织都有一个锚点来管理它。我正在尝试使用“HAS_EMPLOYEE”列表中的另一个用户更新组织实体以成为新的锚点。但是方法后db没有变化,也没有抛出运行时异常。
@Transactional
public OrganizationDTO changeAnchorForOrganization(UUID prevAnchorId, UUID newAnchorId) {
User newAnchor = userService.getAnyUserById(newAnchorId);
if (!newAnchor.isActive()) {
throw new BadRequestException(ExceptionType.REQUEST_BODY_INVALID);
}
User prevAnchor = userService.getAnyUserById(prevAnchorId);
Organization organization = getOrganizationByAnchorId(prevAnchorId);
Set<String> prevAnchorPermissions = prevAnchor.getPermissions();
prevAnchorPermissions.remove(SubRolesConstants.anchor);
prevAnchor.setPermissions(prevAnchorPermissions);
Set<String> newAnchorPermissions = newAnchor.getPermissions();
newAnchorPermissions.add(SubRolesConstants.anchor);
newAnchor.setPermissions(newAnchorPermissions);
organization.setAnchor(newAnchor);
return organizationMapper.entityToDTO(organization);
}
organization.setAnchor(newAnchor); 这行不行? 结果 DTO 对 org 锚点进行了更改,但 db 没有。如果我在这种方法之后尝试获得组织,我将获得旧版本的组织(带有以前的锚) 坚持了很长时间。也许有人可以帮助我?
【问题讨论】:
-
您使用的是什么版本的 Spring Data Neo4j?此外,我在您的代码中没有看到任何服务调用来保存更改。
-
我认为@transactional 与托管实体一起操作,因此它们将在事务结束时由实体管理器保存。 spring data neo4j的版本是2.3.2 RELEASE
-
Spring Data Neo4j 2?你确定吗?这已经多年没有维持了。你能从
mvn dependency:tree提取版本吗?
标签: spring neo4j spring-data