gpt4 book ai didi

java - OrderItem (order_orderID) 中的 Hibernate 外键为 null

转载 作者:太空宇宙 更新时间:2023-11-04 13:55:31 25 4
gpt4 key购买 nike

我有两个表 OrdersOrderItem 如下:

@Entity
@Table(name = "orders")
public class Order implements Serializable {

@Id
@GeneratedValue
private Integer orderID;
@Column(nullable = false)
private Date orderDate;
@ManyToOne(cascade = CascadeType.ALL)
private User user;

@OneToMany(cascade = CascadeType.ALL)
private Set<OrderItem> orderItems = new HashSet<OrderItem>();

public Order() {
}

public Order(Date orDate, User currentUser) {
this.orderDate = orDate;
this.user = currentUser;
}

public Set<OrderItem> getOrderItems() {
return orderItems;
}

public void setOrderItems(Set<OrderItem> orderItems) {
this.orderItems = orderItems;
}

//getter/setters for orderDate, user

@Entity
public class OrderItem implements Serializable {

@Id
@GeneratedValue
private Integer id;
@ManyToOne(cascade = CascadeType.ALL)
private Book book; // F.K to Book table
@Column(nullable = false)
private int quantity;
@Column(nullable = false)
private double totalPrice;

public OrderItem() {}
public OrderItem( Book currentBook, int qty, double totalPrice) {
this.book = currentBook;
this.quantity = qty;
this.totalPrice = totalPrice;
}
//getter/setters

在这里我初始化它们以存储在数据库中:

@Transactional
public void storeOrderInDB() {

order = new Order(currentDate(), currentUser); //date,user
orderService.addOrder(order);

OrderItem orderItem = new OrderItem();
orderItem.setBook(currentBook);
orderItem.setQuantity(qty);
orderItem.setTotalPrice(getTotalCost(qty, unitPrice));

orderItemService.addOrderItem(orderItem);
}

这是结果:

订单:

订单 ID:5,订单日期:“2015-04-25 23:11:16”,用户 ID:1

订单项:

id:2,数量:1,totalPrice:5000,bookId:5,order_orderID:null

为什么order-orderIDnull

我需要它不为空。

最佳答案

订单实体中您已声明

@OneToMany(cascade = CascadeType.ALL)
private Set<OrderItem> orderItems = new HashSet<OrderItem>();

以上声明表示您的外键由 Order Entity 维护, 解决您的问题

@Transactional
public void storeOrderInDB() {

Order order = new Order(currentDate(), currentUser); //date,user

OrderItem orderItem = new OrderItem();
orderItem.setBook(currentBook);
orderItem.setQuantity(qty);
orderItem.setTotalPrice(getTotalCost(qty, unitPrice));
//orderItemService.addOrderItem(orderItem);
Set<OrderItem> orderItemSet=order.getOrderItems();
orderItemSet.add(orderItem);
order.setOrderItems(orderItemSet);
orderService.addOrder(order);
}

希望这能解决您的问题谢谢!

关于java - OrderItem (order_orderID) 中的 Hibernate 外键为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29869362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com