在 jhipster 微服务中使用带有附加数据的用户实体

Use user entity with additional data in a jhipster microservice

我目前正在从事 Jhipster 项目。我设置了 jhipster uaa 来注册用户(默认实现)。现在我想创建一个 userService(jhipster 微服务),它的作用类似于用户配置文件的 api。我已经创建了一个应该扩展默认用户实体的用户配置文件实体。我还可以通过网关将用户分配给用户配置文件(我不确定这是否正常工作),但现在我有一些 problems/things 我不明白:

  1. 我是否需要在微服务、网关或两者中创建用户配置文件实体?如果我按照 jhipster 文档 (https://www.jhipster.tech/tips/022_tip_registering_user_with_additional_information.html) 给出的说明进行操作,我会收到此错误代码:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: Unknown entity name: org.springframework.security.core.userdetails.User

但我不确定此示例是否适用于微服务用例。 这也只有在我删除 id 值上方的 @GeneratedValue(strategy = GenerationType.IDENTITY) 注释时才会发生。

  1. 我真的需要一个单独的用户服务来获取 "extended" 用户实体(用户配置文件)吗? 我在想,userservice-api returns userprofile(应该与用户实体共享用户 ID)。

  2. 我想在用户注册表中添加其他字段(用户名、地址、邮政编码、城市)。是否可以使用此信息创建默认用户实体以及由我的微服务处理的扩展用户配置文件?

感谢任何帮助,因为这是一个非常重要的项目。如果我对 jhipster 微服务 "mechanics" 有什么误解,请告诉我。我应该注意,我处于 ​​spring 开发的初学者水平,如果我遗漏了一些明显的东西,我深表歉意。

我认为 DTO 是最有效的解决方案。 Jhipster 已经集成了 Mapstruct。您在创建新用户时创建一个传递给服务层的 dto,然后映射器进行映射以拥有 defaultUser 并保留它。 我建议您阅读 Jhipster 网站上的 Mapstruct 文档或示例,这里是 link:https://www.jhipster.tech/using-dtos/

好的,所以我找到了解决方案。对于处理此类问题的任何人: 又看了下jhipster提供的解决方案: https://www.jhipster.tech/tips/022_tip_registering_user_with_additional_information.html

有点过时,但总的来说它仍然有效。问题是,文件移动了位置并更改了一些方法(我之前没有注意到),但原则仍然适用。