如何使用mapstruct和jhipster执行左连接?

如何使用mapstruct和jhipster执行左连接?,jhipster,mapstruct,Jhipster,Mapstruct,如何使用jhipster为我和mapstruct生成的项目结构执行左连接?我不知道如何在下面的Mapper类中合并无序和提交实体 @Repository public interface DisorderRepository extends JpaRepository<Disorder, Long> { @Query("SELECT " + "new com.mohw.surveillance.app.service.dto.DisorderSubmiss

如何使用jhipster为我和mapstruct生成的项目结构执行左连接?我不知道如何在下面的Mapper类中合并无序和提交实体

@Repository
public interface DisorderRepository extends JpaRepository<Disorder, Long> {
    @Query("SELECT " +
          "new com.mohw.surveillance.app.service.dto.DisorderSubmissionDTO(d.id, d.name, SUM(s.amount)) " +
          "FROM Disorder d LEFT OUTER JOIN SubmissionCount s ON (d.id = s.disorder.id) " +
          "WHERE s.site.id = 11 AND s.createdDate BETWEEN :start_date AND :end_date " +
          "GROUP BY s.disorder, d.name")
    Page<DisorderSubmissionDTO> getDisorderSubmissionasDTO(@Param("start_date") Date start_date, @Param("end_date") Date end_date);
}
@Mapper(componentModel=“spring”,使用={})
公共接口提交映射器扩展EntityMapper{
@映射(source=“disorder.id”,target=“disorder\u id”)
@映射(source=“disorder.name”,target=“disorder\u name”)
无序服从于托托(无序);
对实体的无序(无序服从到无序服从到);
默认无序fromId(长id){
if(id==null){
返回null;
}
紊乱=新的紊乱();
紊乱。setId(id);
返回障碍;
}
}

我不知道如何在上面的Mapper类中合并无序和提交实体

是否确实要使用MapStruct?通过编写手动代码,这将是微不足道的。@GaëlMarziou您能告诉我一些文档的方向吗?JHipster使用MapStruct在实体和DTO之间构建映射。在这里,您使用的是存储库中的DTO投影,这与使用案例并不完全相同。我现在不确定你的问题到底是什么,也不确定你的问题是什么。你试过什么?@GaëlMarziou我试着在无序和顺从之间做一个多对一的映射。mapstruct可以处理这样的场景吗?你是对的,所以我把DTO从仓库里移除了是的,可以检查他们的文件。但是问问自己,与手动编写简单的映射代码相比,是否值得学习这个库。
@Entity
@Table(name = "submission_count")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class SubmissionCount implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
    @SequenceGenerator(name = "sequenceGenerator")
    private Long id;

    @Column(name = "amount")
    private Integer amount;

    @Temporal(TemporalType.DATE)
    @Column(name = "created_date")
    private Date createdDate;

    @Column(name = "modified_date")
    private ZonedDateTime modifiedDate;

    @ManyToOne
    @JsonIgnoreProperties("submissioncounts")
    private Disorder disorder;
}
@Entity
@Table(name = "disorder")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class Disorder implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
    @SequenceGenerator(name = "sequenceGenerator")
    private Long id;

    @Size(max = 200)
    @Column(name = "name", length = 200)
    private String name;

    @Column(name = "created_date")
    private ZonedDateTime createdDate;

    @Column(name = "modified_date")
    private ZonedDateTime modifiedDate;

    @OneToMany(mappedBy = "disorder")
    @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
    private Set<SubmissionCount> submissioncounts = new HashSet<>();
}
public class DisorderSubmissionDTO implements Serializable {

    private Long disorder_id;
    private String disorder_name;
    private Long submissioncount_amount_sum;
}
@Mapper(componentModel = "spring", uses = {})
public interface DisorderSubmissionMapper extends EntityMapper<DisorderSubmissionDTO, Disorder> {

    @Mapping(source = "disorder.id", target = "disorder_id")
    @Mapping(source = "disorder.name", target = "disorder_name")
    DisorderSubmissionDTO toDto(Disorder disorder);

    Disorder toEntity(DisorderSubmissionDTO DisorderSubmissionDTO);

    default Disorder fromId(Long id) {
        if (id == null) {
            return null;
        }
        Disorder disorder = new Disorder();
        disorder.setId(id);
        return disorder;
    }
}