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 a8a0e0145c3cb273ae61b293da8d24b002abfef6..b8d5d0d52f9dd99069a529c4e005c59ccb86215e 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 0000000000000000000000000000000000000000..6cdbc6362124350155fd9b30fd7321c7f012ca9e --- /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 0000000000000000000000000000000000000000..7bbec60dbcd8b02d803833e394a8c935bba68e76 --- /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 67f6757f466112a0f2d7ea5d9e1eb074834bb976..6cbb1672c2cfbe078d7a597d80daa3cab089d946 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"})