Drop Configurations correctly, reimplement OrderItem correctly
This commit is contained in:
@@ -18,6 +18,6 @@ public class Order {
|
|||||||
@Column(name = "time")
|
@Column(name = "time")
|
||||||
private Long time;
|
private Long time;
|
||||||
|
|
||||||
@OneToMany(mappedBy = "orderId")
|
@OneToMany(mappedBy = "order", fetch = FetchType.LAZY)
|
||||||
private List<OrderItem> orderItems;
|
private List<OrderItem> orderItems;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,17 +2,23 @@ package de.htwsaar.webshop.repository.entities;
|
|||||||
|
|
||||||
import jakarta.persistence.*;
|
import jakarta.persistence.*;
|
||||||
import jakarta.validation.constraints.Min;
|
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 org.hibernate.annotations.OnDelete;
|
||||||
|
|
||||||
import java.io.Serializable;
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
@Entity
|
@Entity
|
||||||
@Table(name = "OrderItems")
|
@Table(name = "OrderItems")
|
||||||
public class OrderItem {
|
public class OrderItem {
|
||||||
|
|
||||||
@EmbeddedId
|
@Id
|
||||||
private OrderItemId id;
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
@Column(nullable = false)
|
@Column(nullable = false)
|
||||||
@Min(value = 1, message = "Amount must be at least 1")
|
@Min(value = 1, message = "Amount must be at least 1")
|
||||||
@@ -29,22 +35,4 @@ public class OrderItem {
|
|||||||
@JoinColumn(name = "articleId", referencedColumnName = "id", nullable = false)
|
@JoinColumn(name = "articleId", referencedColumnName = "id", nullable = false)
|
||||||
@OnDelete(action = org.hibernate.annotations.OnDeleteAction.SET_NULL)
|
@OnDelete(action = org.hibernate.annotations.OnDeleteAction.SET_NULL)
|
||||||
private Article article;
|
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +1,20 @@
|
|||||||
DROP TABLE IF EXISTS ArticleConfigurations;
|
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
|
||||||
|
);
|
||||||
Reference in New Issue
Block a user