From 252ae36b86e6686fbe6331f349fe237e4b2e7e10 Mon Sep 17 00:00:00 2001 From: Tim <47184194+imgde@users.noreply.github.com> Date: Sat, 24 May 2025 13:02:55 +0200 Subject: [PATCH] Drop Configurations correctly, reimplement OrderItem correctly --- .../webshop/repository/entities/Order.java | 2 +- .../repository/entities/OrderItem.java | 34 ++++++------------- 00-backend/src/main/resources/db/DBv3.sql | 21 +++++++++++- 3 files changed, 32 insertions(+), 25 deletions(-) diff --git a/00-backend/src/main/java/de/htwsaar/webshop/repository/entities/Order.java b/00-backend/src/main/java/de/htwsaar/webshop/repository/entities/Order.java index 611458b..41b135c 100644 --- a/00-backend/src/main/java/de/htwsaar/webshop/repository/entities/Order.java +++ b/00-backend/src/main/java/de/htwsaar/webshop/repository/entities/Order.java @@ -18,6 +18,6 @@ public class Order { @Column(name = "time") private Long time; - @OneToMany(mappedBy = "orderId") + @OneToMany(mappedBy = "order", fetch = FetchType.LAZY) private List orderItems; } diff --git a/00-backend/src/main/java/de/htwsaar/webshop/repository/entities/OrderItem.java b/00-backend/src/main/java/de/htwsaar/webshop/repository/entities/OrderItem.java index fb05a6a..e35ea92 100644 --- a/00-backend/src/main/java/de/htwsaar/webshop/repository/entities/OrderItem.java +++ b/00-backend/src/main/java/de/htwsaar/webshop/repository/entities/OrderItem.java @@ -2,17 +2,23 @@ package de.htwsaar.webshop.repository.entities; import jakarta.persistence.*; import jakarta.validation.constraints.Min; -import lombok.*; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; import org.hibernate.annotations.OnDelete; -import java.io.Serializable; - +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor @Entity @Table(name = "OrderItems") public class OrderItem { - @EmbeddedId - private OrderItemId id; + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; @Column(nullable = false) @Min(value = 1, message = "Amount must be at least 1") @@ -29,22 +35,4 @@ public class OrderItem { @JoinColumn(name = "articleId", referencedColumnName = "id", nullable = false) @OnDelete(action = org.hibernate.annotations.OnDeleteAction.SET_NULL) private Article article; - - @ManyToOne(fetch = FetchType.LAZY) - @MapsId("articleConfId") - @JoinColumn(name = "articleConfId", referencedColumnName = "id") - @OnDelete(action = org.hibernate.annotations.OnDeleteAction.SET_NULL) - private ArticleConfiguration articleConfig; - - @AllArgsConstructor - @NoArgsConstructor - @Getter - @Setter - @EqualsAndHashCode - @Embeddable - class OrderItemId implements Serializable { - private Long orderId; - private Long articleId; - private Long articleConfId; - } } diff --git a/00-backend/src/main/resources/db/DBv3.sql b/00-backend/src/main/resources/db/DBv3.sql index 205645a..157e72b 100644 --- a/00-backend/src/main/resources/db/DBv3.sql +++ b/00-backend/src/main/resources/db/DBv3.sql @@ -1 +1,20 @@ -DROP TABLE IF EXISTS ArticleConfigurations; \ No newline at end of file +DROP TABLE IF EXISTS ArticleConfigurations; + +DROP TABLE OrderItems; + +CREATE TABLE IF NOT EXISTS OrderItems +( + id INTEGER NOT NULL PRIMARY KEY, --composite pk was wrong + orderId INTEGER NOT NULL, + articleId INTEGER NOT NULL, + amount INTEGER NOT NULL, + -- art conf not needed + + CONSTRAINT cAmount CHECK (amount > 0), + FOREIGN KEY (orderId) REFERENCES Orders (id) + ON DELETE CASCADE + ON UPDATE CASCADE, + FOREIGN KEY (articleId) REFERENCES Articles (id) + ON DELETE SET NULL + ON UPDATE CASCADE +); \ No newline at end of file