From 5092de6804da307d0d1a5f92d99b8f7a6f36a92b Mon Sep 17 00:00:00 2001
From: Hendrik Jungnitsch <hendrik.jungnitsch@gedoplan.de>
Date: Mo, 14 Nov 2022 12:14:27 +0100
Subject: [PATCH] exercise04

---
 src/main/java/de/gedoplan/seminar/jpa/exercise/rest/JunctionResource.java |   11 ++++++++++-
 src/main/java/de/gedoplan/seminar/jpa/exercise/domain/Junction.java       |   16 ++++++++++++++++
 src/main/java/de/gedoplan/seminar/jpa/exercise/domain/Highway.java        |   15 +++++++++++++++
 3 files changed, 41 insertions(+), 1 deletions(-)

diff --git a/src/main/java/de/gedoplan/seminar/jpa/exercise/domain/Highway.java b/src/main/java/de/gedoplan/seminar/jpa/exercise/domain/Highway.java
index 7f3ca9b..ca4db07 100644
--- a/src/main/java/de/gedoplan/seminar/jpa/exercise/domain/Highway.java
+++ b/src/main/java/de/gedoplan/seminar/jpa/exercise/domain/Highway.java
@@ -1,8 +1,14 @@
 package de.gedoplan.seminar.jpa.exercise.domain;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import javax.persistence.Entity;
 import javax.persistence.Id;
+import javax.persistence.OneToMany;
 import javax.persistence.Table;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 
 @Entity
 @Table(name = Highway.TABLE_NAME)
@@ -15,6 +21,10 @@
 	private String name;
 	private String origin;
 	private String destination;
+	
+	@JsonIgnoreProperties("highway")
+	@OneToMany(mappedBy = "highway")
+	private List<Junction> junctions = new ArrayList<>();
 	
 	public Highway() {
 	}
@@ -57,6 +67,11 @@
 	public String getDestination() {
 		return this.destination;
 	}
+	
+
+	public List<Junction> getJunctions() {
+		return junctions;
+	}
 
 	@Override
 	public String toString() {
diff --git a/src/main/java/de/gedoplan/seminar/jpa/exercise/domain/Junction.java b/src/main/java/de/gedoplan/seminar/jpa/exercise/domain/Junction.java
index f29ccf7..5a6dbf3 100644
--- a/src/main/java/de/gedoplan/seminar/jpa/exercise/domain/Junction.java
+++ b/src/main/java/de/gedoplan/seminar/jpa/exercise/domain/Junction.java
@@ -8,7 +8,10 @@
 import javax.persistence.GeneratedValue;
 import javax.persistence.GenerationType;
 import javax.persistence.Id;
+import javax.persistence.ManyToOne;
 import javax.persistence.Table;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 
 @Entity
 @Table(name = Junction.TABLE_NAME)
@@ -26,6 +29,10 @@
 	private JunctionKind kind;
 
 	private String no;
+	
+	@JsonIgnoreProperties("junctions")
+	@ManyToOne
+	private Highway highway;
 
 	public Junction() {
 
@@ -68,6 +75,15 @@
 	public void setNo(String no) {
 		this.no = no;
 	}
+	
+
+	public Highway getHighway() {
+		return highway;
+	}
+
+	public void setHighway(Highway highway) {
+		this.highway = highway;
+	}
 
 	@Override
 	public int hashCode() {
diff --git a/src/main/java/de/gedoplan/seminar/jpa/exercise/rest/JunctionResource.java b/src/main/java/de/gedoplan/seminar/jpa/exercise/rest/JunctionResource.java
index 7a4c2bf..7a8541b 100644
--- a/src/main/java/de/gedoplan/seminar/jpa/exercise/rest/JunctionResource.java
+++ b/src/main/java/de/gedoplan/seminar/jpa/exercise/rest/JunctionResource.java
@@ -6,6 +6,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.MediaType;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -16,7 +17,9 @@
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.server.ResponseStatusException;
 
+import de.gedoplan.seminar.jpa.exercise.domain.Highway;
 import de.gedoplan.seminar.jpa.exercise.domain.Junction;
+import de.gedoplan.seminar.jpa.exercise.repository.HighwayRepository;
 import de.gedoplan.seminar.jpa.exercise.repository.JunctionRepository;
 
 @RestController
@@ -30,6 +33,9 @@
 
   @Autowired
   JunctionRepository junctionRepository;
+  
+  @Autowired
+  HighwayRepository highwayRepository;
 
   /**
    * Exercise JPA_BASICS_02: Insert test data.
@@ -56,8 +62,11 @@
     return junction.orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND));
   }
   
+  @Transactional
   @PutMapping("/{junctionId}/assignToHighway/{highwayId}")
   public void assignToHighway(@PathVariable Integer junctionId, @PathVariable Integer highwayId) {
-	  
+	  Highway highwayRef = highwayRepository.getReferenceById(highwayId);
+	  Junction junction = junctionRepository.findById(junctionId).orElseThrow();
+	  junction.setHighway(highwayRef);
   }
 }

--
Gitblit v1.7.1