Как я могу выполнить левое соединение, используя структуру проекта, сгенерированную 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 выше