From a57f08c78c86edbe70540c40a83cd73fe6f22c4e Mon Sep 17 00:00:00 2001 From: Jan Tymel <410388@mail.muni.cz> Date: Fri, 5 Feb 2021 08:33:51 +0100 Subject: [PATCH] Add OneToMany mapping of QuestionPhaseRelation to TrainingPhase Resolves #7 --- .../example/demo/domain/QuestionPhaseRelation.java | 10 +++++----- .../java/com/example/demo/domain/TrainingPhase.java | 12 ++++++++++++ .../repository/QuestionPhaseRelationRepository.java | 5 ----- .../demo/service/QuestionnairePhaseService.java | 2 +- 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/example/demo/domain/QuestionPhaseRelation.java b/src/main/java/com/example/demo/domain/QuestionPhaseRelation.java index e76be3f6..db6e6ae1 100644 --- a/src/main/java/com/example/demo/domain/QuestionPhaseRelation.java +++ b/src/main/java/com/example/demo/domain/QuestionPhaseRelation.java @@ -26,7 +26,7 @@ public class QuestionPhaseRelation { private QuestionnairePhase questionnairePhase; @ManyToOne(fetch = FetchType.LAZY) - private TrainingPhase relatedPhase; + private TrainingPhase relatedTrainingPhase; @ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.PERSIST) @JoinTable(name = "question_phase_relation_question", @@ -61,12 +61,12 @@ public class QuestionPhaseRelation { this.questionnairePhase = questionnairePhase; } - public TrainingPhase getRelatedPhase() { - return relatedPhase; + public TrainingPhase getRelatedTrainingPhase() { + return relatedTrainingPhase; } - public void setRelatedPhase(TrainingPhase relatedPhase) { - this.relatedPhase = relatedPhase; + public void setRelatedTrainingPhase(TrainingPhase relatedPhase) { + this.relatedTrainingPhase = relatedPhase; } public Set<Question> getQuestions() { diff --git a/src/main/java/com/example/demo/domain/TrainingPhase.java b/src/main/java/com/example/demo/domain/TrainingPhase.java index 49f789df..fa488c0d 100644 --- a/src/main/java/com/example/demo/domain/TrainingPhase.java +++ b/src/main/java/com/example/demo/domain/TrainingPhase.java @@ -23,6 +23,10 @@ public class TrainingPhase extends AbstractPhase { @OneToMany(mappedBy = "trainingPhase", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY) private List<DecisionMatrixRow> decisionMatrix; + @OrderBy + @OneToMany(mappedBy = "relatedTrainingPhase", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY) + private List<QuestionPhaseRelation> questionPhaseRelations = new ArrayList<>(); + public String getEstimatedDuration() { return estimatedDuration; } @@ -62,4 +66,12 @@ public class TrainingPhase extends AbstractPhase { public void setDecisionMatrix(List<DecisionMatrixRow> decisionMatrix) { this.decisionMatrix = decisionMatrix; } + + public List<QuestionPhaseRelation> getQuestionPhaseRelations() { + return questionPhaseRelations; + } + + public void setQuestionPhaseRelations(List<QuestionPhaseRelation> questionPhaseRelations) { + this.questionPhaseRelations = questionPhaseRelations; + } } diff --git a/src/main/java/com/example/demo/repository/QuestionPhaseRelationRepository.java b/src/main/java/com/example/demo/repository/QuestionPhaseRelationRepository.java index b4853fe2..49057b93 100644 --- a/src/main/java/com/example/demo/repository/QuestionPhaseRelationRepository.java +++ b/src/main/java/com/example/demo/repository/QuestionPhaseRelationRepository.java @@ -2,11 +2,6 @@ package com.example.demo.repository; import com.example.demo.domain.QuestionPhaseRelation; import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Query; -import org.springframework.data.repository.query.Param; public interface QuestionPhaseRelationRepository extends JpaRepository<QuestionPhaseRelation, Long> { - - @Query("SELECT COALESCE(MAX(q.order), -1) FROM QuestionPhaseRelation q WHERE q.questionnairePhase.id = :phaseId") - Integer getCurrentMaxOrder(@Param("phaseId") Long phaseId); } diff --git a/src/main/java/com/example/demo/service/QuestionnairePhaseService.java b/src/main/java/com/example/demo/service/QuestionnairePhaseService.java index 20ba97f9..d2a095fb 100644 --- a/src/main/java/com/example/demo/service/QuestionnairePhaseService.java +++ b/src/main/java/com/example/demo/service/QuestionnairePhaseService.java @@ -127,7 +127,7 @@ public class QuestionnairePhaseService { questionPhaseRelation.setOrder(order); questionPhaseRelation.setSuccessRate(phaseRelation.getSuccessRate()); - questionPhaseRelation.setRelatedPhase(trainingPhase); + questionPhaseRelation.setRelatedTrainingPhase(trainingPhase); questionPhaseRelation.setQuestionnairePhase(questionnairePhase); questionnairePhaseRelations.add(questionPhaseRelation); -- GitLab