From be699c1b24ba4f537da07a823067f7b3b030ad5a Mon Sep 17 00:00:00 2001 From: birkon <birkon@stud.ntnu.no> Date: Tue, 25 Apr 2023 13:01:31 +0200 Subject: [PATCH] added relation table between fridge and product --- .../v233/SmartMat/entity/Fridge.java | 11 +++---- .../fridgeProduct/FridgeProductAsso.java | 33 +++++++++++++++++++ .../entity/fridgeProduct/FridgeProductId.java | 23 +++++++++++++ .../v233/SmartMat/entity/product/Product.java | 6 ++-- 4 files changed, 65 insertions(+), 8 deletions(-) create mode 100644 src/main/java/ntnu/idatt2016/v233/SmartMat/entity/fridgeProduct/FridgeProductAsso.java create mode 100644 src/main/java/ntnu/idatt2016/v233/SmartMat/entity/fridgeProduct/FridgeProductId.java diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/Fridge.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/Fridge.java index a8a0e014..b8d5d0d5 100644 --- a/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/Fridge.java +++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/Fridge.java @@ -9,6 +9,7 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import ntnu.idatt2016.v233.SmartMat.entity.fridgeProduct.FridgeProductAsso; import ntnu.idatt2016.v233.SmartMat.entity.product.Product; /** @@ -34,10 +35,8 @@ public class Fridge{ @Column(name = "group_id") long groupId; - @ManyToMany - @JoinTable(name = "fridge_product", - joinColumns = @JoinColumn(name = "fridge_id"), - inverseJoinColumns = @JoinColumn(name = "ean")) - @JsonIgnoreProperties("fridges") - List<Product> products; + @OneToMany + @JoinColumn(name = "ean") + @JsonIgnoreProperties("fridge") + List<FridgeProductAsso> products; } diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/fridgeProduct/FridgeProductAsso.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/fridgeProduct/FridgeProductAsso.java new file mode 100644 index 00000000..6cdbc636 --- /dev/null +++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/fridgeProduct/FridgeProductAsso.java @@ -0,0 +1,33 @@ +package ntnu.idatt2016.v233.SmartMat.entity.fridgeProduct; + +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import ntnu.idatt2016.v233.SmartMat.entity.Fridge; +import ntnu.idatt2016.v233.SmartMat.entity.product.Product; + +import java.sql.Date; + +@AllArgsConstructor +@NoArgsConstructor +@Data +@Entity(name = "fridge_product") +@IdClass(FridgeProductId.class) +public class FridgeProductAsso { + @Id + @ManyToOne + @MapsId("fridge_id") + @JoinColumn(name = "fridge_id") + private Fridge fridgeId; + + @Id + @ManyToOne + @MapsId("ean") + @JoinColumn(name = "ean") + private Product ean; + + @Column(name = "purchase_date") + private Date purchaseDate; + +} diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/fridgeProduct/FridgeProductId.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/fridgeProduct/FridgeProductId.java new file mode 100644 index 00000000..7bbec60d --- /dev/null +++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/fridgeProduct/FridgeProductId.java @@ -0,0 +1,23 @@ +package ntnu.idatt2016.v233.SmartMat.entity.fridgeProduct; + + +import lombok.AllArgsConstructor; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * This class represents a fridge product association id + * @author Birk + * @version 1.0 + * @since 25.04.2023 + */ +@EqualsAndHashCode +@NoArgsConstructor +@AllArgsConstructor +public class FridgeProductId implements Serializable { + private long fridgeId; + + private long ean; +} diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/product/Product.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/product/Product.java index 67f6757f..6cbb1672 100644 --- a/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/product/Product.java +++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/product/Product.java @@ -8,6 +8,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import ntnu.idatt2016.v233.SmartMat.entity.Fridge; import ntnu.idatt2016.v233.SmartMat.entity.Recipe; +import ntnu.idatt2016.v233.SmartMat.entity.fridgeProduct.FridgeProductAsso; import java.util.List; @@ -61,9 +62,10 @@ public class Product{ inverseJoinColumns = @JoinColumn(name = "allergy_name")) List<Allergy> allergies; - @ManyToMany(mappedBy = "products") + @OneToMany + @JoinColumn(name = "ean") @JsonIgnoreProperties({"products"}) - List<Fridge> fridges; + List<FridgeProductAsso> fridges; @ManyToMany(mappedBy = "products") @JsonIgnoreProperties({"products"}) -- GitLab