Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Mapstruct多对一映射_Java_Hibernate_Entity_Dto_Mapstruct - Fatal编程技术网

Java Mapstruct多对一映射

Java Mapstruct多对一映射,java,hibernate,entity,dto,mapstruct,Java,Hibernate,Entity,Dto,Mapstruct,我有一个关于mapstruct中@ManyTone映射的问题。我有两张桌子 第一个: @Entity @Table(name = "members", schema = vsm) public class MemberEntity{ @Column(name = "id", nullable = false) protected Long id; @ManyToOne(optional = false) @JoinColumn(name = "case_id"

我有一个关于mapstruct中@ManyTone映射的问题。我有两张桌子

第一个:

@Entity
@Table(name = "members", schema = vsm)
public class MemberEntity{

    @Column(name = "id", nullable = false)
    protected Long id;

    @ManyToOne(optional = false)
    @JoinColumn(name = "case_id", nullable = false)
    private CaseEntity case;
}
第二个:

@Entity
@Table(name = "cases", schema = vsm)
public class CaseEntity {

    @Column(name = "id", nullable = false)
    protected Long id;

    @Column(name = "description", nullable = false)
    protected String description;
}
我有这样一个例子:

public class CasesDto{

    protected Long id;

    protected String description;

    private List<MemberDto> members;
}
CasesDto mapToDto(CaseEntity entity);

我需要填写会员名单;但是我不明白怎么做。

你不能这样简单地将它映射到案例。没有要映射到
列表的集合。
您应该拥有完整的案例实体,其中包括:

  @OneToMany(mappedBy = "cases")
  private List<MemberEntity> members = new ArrayList<>();
  @Mapping(target = "members", source = "members")
  CasesDto toDto(CaseEntity entity, List<MemberEntity> members);

<强>或获取具有附加查询的成员列表,并以这种方式将其合并到MasStutt中(我认为这是一个更糟糕的选择):

  @OneToMany(mappedBy = "cases")
  private List<MemberEntity> members = new ArrayList<>();
  @Mapping(target = "members", source = "members")
  CasesDto toDto(CaseEntity entity, List<MemberEntity> members);
映射(target=“members”,source=“members”) CasesDto toDto(案例实体,列表成员);
如果您在
案例实体
中添加
@OneToMany(mappedBy=“case”)列表成员
,是否会有所帮助?或者这是你不想做的事?不,我不想给我的entyties添加任何新的注释。这是唯一的解决办法吗?目前,我没有任何其他想法。它要么获取太多数据,要么生成
N+1
查询。如果您需要<代码>成员实体<代码> > s > CaseOngult,我会考虑添加In < Cube > CaseOngult及其另一方。您可以有这样的映射器:CasesDto mapToDto(CaseIn实体,列表成员);然后手动指定映射。