缺少用户类 - 在微服务中创建与用户实体的实体关系

时间:2017-04-13 13:01:54

标签: jhipster

我想创建一个与JHipster的用户实体具有多对一关系的实体。

我已经使用JDL-Studio创建了以下实体和与User的关系,使用jhipster import-jdl将其作为.jh文件导入到我的Microservice中:

entity Profile {
    name String required
    bio String
    location String
    photo ImageBlob
}

relationship ManyToOne {
    Profile{user} to User
}

angularSuffix * with mySuffix

dto * with mapstruct

编译我的微服务后,我收到以下错误:

  

Profile.java:44:错误:找不到符号私有用户用户; symbol:class用户位置:class Profile

     

ProfileMapper.java:12:错误:找不到符号   @Mapper(componentModel =" spring",uses = {UserMapper.class,})symbol:class UserMapper

     

ProfileMapper.java:12:错误:无法检索@Mapper注释   @Mapper(componentModel =" spring",uses = {UserMapper.class,})

Profile.java的第43-44行是:

@ManyToOne
private User user;

和ProfileMapper.java如下:

package com.moogrisoft.openseas.service.mapper;

import com.moogrisoft.openseas.domain.*;
import com.moogrisoft.openseas.service.dto.ProfileDTO;

import org.mapstruct.*;
import java.util.List;

/**
 * Mapper for the entity Profile and its DTO ProfileDTO.
 */
@Mapper(componentModel = "spring", uses = {UserMapper.class, })
public interface ProfileMapper {

    @Mapping(source = "user.id", target = "userId")
    ProfileDTO profileToProfileDTO(Profile profile);

    List<ProfileDTO> profilesToProfileDTOs(List<Profile> profiles);

    @Mapping(source = "userId", target = "user")
    Profile profileDTOToProfile(ProfileDTO profileDTO);

    List<Profile> profileDTOsToProfiles(List<ProfileDTO> profileDTOs);
    /**
     * generating the fromId for all mappers if the databaseType is sql, as the class has relationship to it might need it, instead of
     * creating a new attribute to know if the entity has any relationship from some other entity
     *
     * @param id id of the entity
     * @return the entity instance
     */

    default Profile profileFromId(Long id) {
        if (id == null) {
            return null;
        }
        Profile profile = new Profile();
        profile.setId(id);
        return profile;
    }


}

我的项目中没有UserMapper类,因为我是为我生成的。

如果我创建一个Monolithic应用程序然后创建实体关系工作正常,那么由于缺少User类和相关类,它只是微服务的一个问题。

1 个答案:

答案 0 :(得分:5)

在JHipster微服务架构中,用户实体位于网关或UAA service上。

个人资料实体

在UAA中,您可以创建与用户有关系的实体。向实体添加配置文件等附加信息是一个很好的用例。也可以在网关中执行相同的操作。可以看到创建与用户有关系的实体的示例UAA https://github.com/xetys/microxchng-workshop/tree/master/uaa

博客实体

  

在微服务架构中使用实体子生成器的工作方式稍有不同,因为前端和后端代码不在同一个应用程序中。   https://jhipster.github.io/microservices-architecture/#generating_entities

对于这种类型的实体,我建议将用户ID与实体一起存储。您需要从客户端传递用户ID,因为无法从微服务轻松访问ID。我们使用用户ID而不是登录的原因是可以通过用户管理页面修改登录,导致关系失败(来自旧的登录值)。

另一种选择是使用userLogin,可以通过SecurityUtils.java在微服务中访问。只要您处理登录可以更改,这是另一种选择。