当前位置: 首页 > 知识库问答 >
问题:

如何在映射器中删除警告未映射的目标属性?[副本]

印瑾瑜
2023-03-14

自从我将我的项目从jhipster 5.8.2升级到jhipster 6.5.1以来,我对Mapper有很多警告。

我会正确处理此警告,不会在所有映射器中添加此属性:

(unmappedTargetPolicy = ReportingPolicy.IGNORE)

例如,我有以下错误:

service\mapper\PermissionMapper.java:25: warning: Unmapped target property: "removeEntite".
Permission toEntity(PermissionDTO permissionDTO);

在我的对象权限中,我有:

@Entity
@Table(name = "permission")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class Permission implements Serializable {

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@ManyToOne
private Profil profil;

@ManyToOne
private User user;

@ManyToMany
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@JoinTable(name = "permission_entite",
           joinColumns = @JoinColumn(name = "permissions_id", referencedColumnName = "id"),
           inverseJoinColumns = @JoinColumn(name = "entites_id", referencedColumnName = "id"))
private Set<Entite> entites = new HashSet<>();

.... 
 public Set<Entite> getEntites() {
    return entites;
}

public Permission entites(Set<Entite> entites) {
    this.entites = entites;
    return this;
}

public Permission addEntite(Entite entite) {
    this.entites.add(entite);
    entite.getPermissions().add(this);
    return this;
}

public Permission removeEntite(Entite entite) {
    this.entites.remove(entite);
    entite.getPermissions().remove(this);
    return this;
}

public void setEntites(Set<Entite> entites) {
    this.entites = entites;
}

以及以下许可:

public class PermissionDTO implements Serializable {

private Long id;

private Long profilId;

private String profilNom;

private Long userId;

private String userLogin;

private Set<EntiteDTO> entites = new HashSet<>();

... 

public Set<EntiteDTO> getEntites() {
    return entites;
}

public void setEntites(Set<EntiteDTO> entites) {
    this.entites = entites;
}

和映射器:

@Mapper(componentModel = "spring", uses = {ProfilMapper.class, UserMapper.class, EntiteMapper.class, })
public interface PermissionMapper extends EntityMapper <PermissionDTO, Permission> {

@Mapping(source = "profil.id", target = "profilId")
@Mapping(source = "profil.nom", target = "profilNom")

@Mapping(source = "user.id", target = "userId")
@Mapping(source = "user.login", target = "userLogin")
PermissionDTO toDto(Permission permission);

@Mapping(source = "profilId", target = "profil")

@Mapping(source = "userId", target = "user")
@Mapping(target = "entites", ignore = true)
Permission toEntity(PermissionDTO permissionDTO);

带有“忽略=true”的ligne不起作用。

你有什么想法吗?

共有1个答案

诸葛柏
2023-03-14
@Mapper(componentModel = "spring", uses = {ProfilMapper.class, UserMapper.class, EntiteMapper.class, }, unmappedTargetPolicy = ReportingPolicy.IGNORE)

可以在每个映射器上定义属性,也可以使用共享映射器配置。下面的链接中定义了问题的解决方案

忽略未映射的属性

 类似资料:
  • 我正在尝试使用MapStruct实现实体和DTO之间的映射。要映射的属性之一是“结算日期”。它在DTO类中具有相同的名称,并且映射工作正常,但在编译过程中我收到了以下警告: 有没有办法让MapStruct在没有警告的情况下处理这样一个命名奇怪的属性? 我尝试使用注释来明确指定名称,但这没有帮助:

  • 前端将这个json发送到我的API 控制器:

  • 当我尝试通过枚举将源中的字符串映射到目标中的整数时。ModelMapper失败。 来源 目的地 字符串和整数之间的映射在枚举中定义

  • 当我运行模拟器时,我得到这个错误。纠结了一个小时也想不通。新的更新来了之后就开始了。新的更新会解决这个问题吗?或者有办法解决吗?此外,忽略这个错误并创建一个应用程序会导致问题吗? 最后一个,这部分被改变了。我过去可以调整版本,现在更改时会出错。我指的是最小和目标SDK版本。 警告:将新ns http://schemas.android.com/repository/android/common/0

  • 这是我的employee.hbm.xml: 所以,您可以注意到,在我的类中,它没有“id”属性。但是,我在数据库中创建id列,让它成为自动生成的主键。在这种情况下,我不知道应该在将我的类映射到我的数据库。如果我忽略了它,会不会是后来的一些问题呢?

  • 我正在构建一个REST API, 和ActiveBid类 和我的泽西请求映射器,它具有获取数据的逻辑 有人能帮我吗?我不知道和卡桑德拉共事会这么难。