我有一个多租户jhipster应用程序,其中有几个我想要关联的实体或者#34;锁定"访问时使用当前活动用户。我这样做是通过在我的实体上创建一个多对一的关系到用户表。
通过在我的存储库中创建类似的查询来轻松处理查询:
@Query("select myEntity from MyEntity myEntity where myEntity.user.login = ?#{principal.username}")
List<MyEntity> findByUserIsCurrentUser();
我正在寻找一种直接的创建,更新和删除方法,但强制用户在服务器端设置。到目前为止,我提出的可能的解决方案是:
在保存任何内容之前,实际上在我的实体上设置用户对象,该实体在编程中具有编程关系。这将要求我从安全上下文获取当前登录并查询用户存储库。这将要求我将UserRepository注入几乎每个存储库,并执行额外的查询来加载用户对象。这似乎效率低下。例如:
private final MyEntityRepository myEntityRepository;
private final UserRepository userRepository;
@PutMapping("/my-entities")
@Timed
public ResponseEntity<MyEntity> updateMyEntity(@Valid @RequestBody MyEntity myEntity) throws URISyntaxException {
log.debug("REST request to update MyEntity : {}", myEntity);
User currentUser = new User();
currentUser.setLogin(SecurityUtils.getCurrentUserLogin());
myEntity.setUser(current);
MyEntity result = myEntityRepository.save(myEntity);
return ResponseEntity.ok()
.headers(HeaderUtil.createEntityUpdateAlert(ENTITY_NAME, myEntity.getId().toString()))
.body(result);
}
那么,有没有&#34;对&#34;强迫关系设置的方式(不从客户端传递)?如果是这样,它是什么以及我将如何去做呢?