Как я могу выполнить левое соединение, используя mapstruct и jhipster? - PullRequest
0 голосов
/ 13 января 2020

Как я могу выполнить левое соединение, используя структуру проекта, сгенерированную jhipster для меня, и mapstruct? Я не уверен, как объединить объекты Disorder и Submission в классе 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);
}

Я хочу создать отображение для левого объединения выше

@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;
    }
}

Я не уверен, как объединить сущности Disorder и Submission в классе Mapper выше

...