Я занимаюсь разработкой сайта электронной коммерции (Spring MVC, java, mySql, Hibernate) для своего проекта в колледже. У меня есть различные модели, такие как клиент, продукт, заказы, custOrderHistory и т. Д.
Я могу показать всю информацию о клиенте (на странице администратора) и все продукты, которые клиент может просмотреть.
Но проблема, с которой я сталкиваюсь, заключается в том, как показать заказы и историю заказов клиента?
У моей таблицы заказов есть orderId, productId, количество и общая стоимость. но чтобы показать название продукта, я должен использовать productId и получить название продукта из таблицы продуктов.
Понятия не имею, как это сделать.
До сих пор я использовал цикл forest jstl для итерации товаров на странице productList.jsp и отображения их в таблице.
Но, как я уже сказал выше, мне нужно получить данные из 3-4 таблиц одновременно, например productName (из таблицы продуктов), productManuacturer (также из таблицы продуктов), ShippingAddress (из таблицы клиентов). И я не уверен, как это сделать.
Редактировать 1: Я задал этот вопрос с чужого компьютера, и тогда у меня не было моего кода.
Итак, я даю свой код здесь.
Customer.java
package com.site.model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import org.hibernate.validator.constraints.NotEmpty;
import javax.persistence.*;
import java.io.Serializable;
@Entity
public class Customer implements Serializable {
private static final long serialVersionUID = -3280023076408333682L;
@Id
@GeneratedValue
private int customerId;
@NotEmpty(message = " The customer name must not be blank.")
private String customerName;
@NotEmpty (message = " The customer email must not be blank.")
private String customerEmail;
private String customerPhone;
@NotEmpty (message = " The username must not be blank.")
private String username;
@NotEmpty (message = " The password must not be blank.")
private String password;
private boolean enabled;
@OneToOne
@JoinColumn(name = "billingAddressId")
private BillingAddress billingAddress;
@OneToOne
@JoinColumn(name = "shippingAddressId")
private ShippingAddress shippingAddress;
@OneToOne()
@JoinColumn(name = "cartId")
@JsonIgnore
private Cart cart;
public int getCustomerId() {
return customerId;
}
public void setCustomerId(int customerId) {
this.customerId = customerId;
}
public String getCustomerName() {
return customerName;
}
public void setCustomerName(String customerName) {
this.customerName = customerName;
}
public BillingAddress getBillingAddress() {
return billingAddress;
}
public void setBillingAddress(BillingAddress billingAddress) {
this.billingAddress = billingAddress;
}
public ShippingAddress getShippingAddress() {
return shippingAddress;
}
public void setShippingAddress(ShippingAddress shippingAddress) {
this.shippingAddress = shippingAddress;
}
public String getCustomerPhone() {
return customerPhone;
}
public void setCustomerPhone(String customerPhone) {
this.customerPhone = customerPhone;
}
public String getCustomerEmail() {
return customerEmail;
}
public void setCustomerEmail(String customerEmail) {
this.customerEmail = customerEmail;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public boolean isEnabled() {
return enabled;
}
public void setEnabled(boolean enabled) {
this.enabled = enabled;
}
public Cart getCart() {
return cart;
}
public void setCart(Cart cart) {
this.cart = cart;
}
}
Cart.java
пакет com.site.model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import javax.persistence. *;
импорт java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
@ Entity
Открытый класс Cart реализует Serializable {
приватный статический финал long serialVersionUID = -2479653100535233857L;
@ Id
@GeneratedValue
private int cartId;
@ OneToMany (mappedBy = "cart", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
приватный список cartItems = new ArrayList ();
@ OneToOne
@JoinColumn (name = "customerId")
@JsonIgnore
частный клиент клиент;
частный двухместный grandTotal;
public int getCartId () {
вернуть cartId;
}
public void setCartId (int cartId) {
this.cartId = cartId;
}
public double getGrandTotal () {
вернуть grandTotal;
}
public void setGrandTotal (double grandTotal) {
this.grandTotal = grandTotal;
}
публичный список getCartItems () {
вернуть cartItems;
}
public void setCartItems (List cartItems) {
this.cartItems = cartItems;
}
public Customer getCustomer () {
возвратный клиент;
}
public void setCustomer (Customer customer) {
this.customer = customer;
}
}
CartItem.java
package com.site.model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import javax.persistence. *;
импорт java.io.Serializable;
import java.util.List;
@ Entity
Открытый класс CartItem реализует Сериализуемый {
private static final long serialVersionUID = -904360230041854157L;
@Id
@GeneratedValue
private int cartItemId;
@ManyToOne
@JoinColumn(name="cartId")
@JsonIgnore
private Cart cart;
@ManyToOne
@JoinColumn(name = "productId")
private Product product;
private int quantity;
private double totalPrice;
@ManyToMany(cascade=CascadeType.ALL, mappedBy="cartItems")
@JsonIgnore
private List<OrderHistory> orderHistoryList;
public int getCartItemId() {
return cartItemId;
}
public void setCartItemId(int cartItemId) {
this.cartItemId = cartItemId;
}
public Product getProduct() {
return product;
}
public void setProduct(Product product) {
this.product = product;
}
public int getQuantity() {
return quantity;
}
public void setQuantity(int quantity) {
this.quantity = quantity;
}
public double getTotalPrice() {
return totalPrice;
}
public void setTotalPrice(double totalPrice) {
this.totalPrice = totalPrice;
}
public Cart getCart() {
return cart;
}
public void setCart(Cart cart) {
this.cart = cart;
}
public List<OrderHistory> getOrderHistoryList() {
return orderHistoryList;
}
public void setOrderHistoryList(List<OrderHistory> orderHistoryList) {
this.orderHistoryList = orderHistoryList;
}
}
CustomerOrder.java
package com.site.model;
import javax.persistence. *;
import java.io.Serializable;
@ Entity
открытый класс CustomerOrder реализует Serializable {
private static final long serialVersionUID = -3608286390950243118L;
@Id
@GeneratedValue
private int customerOrderId;
@OneToOne
@JoinColumn(name = "cartId")
private Cart cart;
@OneToOne
@JoinColumn(name = "customerId")
private Customer customer;
@OneToOne
@JoinColumn(name = "billingAddressId")
private BillingAddress billingAddress;
@OneToOne
@JoinColumn(name = "shippingAddressId")
private ShippingAddress shippingAddress;
public int getCustomerOrderId() {
return customerOrderId;
}
public void setCustomerOrderId(int customerOrderId) {
this.customerOrderId = customerOrderId;
}
public Cart getCart() {
return cart;
}
public void setCart(Cart cart) {
this.cart = cart;
}
public Customer getCustomer() {
return customer;
}
public void setCustomer(Customer customer) {
this.customer = customer;
}
public BillingAddress getBillingAddress() {
return billingAddress;
}
public void setBillingAddress(BillingAddress billingAddress) {
this.billingAddress = billingAddress;
}
public ShippingAddress getShippingAddress() {
return shippingAddress;
}
public void setShippingAddress(ShippingAddress shippingAddress) {
this.shippingAddress = shippingAddress;
}
}
OrderHistory.java
пакет com.site.model;
import javax.persistence. *;
импорт java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
@ Entity
Открытый класс OrderHistory реализует Сериализуемый {
private static final long serialVersionUID = 1083533250613139445L;
@Id
@GeneratedValue
private int orderHistoryId;
private int customerId;
private String customerName;
private int customerOrderId;
private int cartId;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "cartItem_orderHistory", joinColumns = @JoinColumn(name = "orderHistoryId"),
inverseJoinColumns = @JoinColumn
(name = "cartItemId"))
private List<CartItem> cartItems = new ArrayList<CartItem>();
private double grandTotal;
private String billingAddress;
private String shippingAddress;
public int getOrderHistoryId() {
return orderHistoryId;
}
public void setOrderHistoryId(int orderHistoryId) {
this.orderHistoryId = orderHistoryId;
}
public int getCustomerId() {
return customerId;
}
public void setCustomerId(int customerId) {
this.customerId = customerId;
}
public String getCustomerName() {
return customerName;
}
public void setCustomerName(String customerName) {
this.customerName = customerName;
}
public int getCustomerOrderId() {
return customerOrderId;
}
public void setCustomerOrderId(int customerOrderId) {
this.customerOrderId = customerOrderId;
}
public int getCartId() {
return cartId;
}
public void setCartId(int cartId) {
this.cartId = cartId;
}
public List<CartItem> getCartItems() {
return cartItems;
}
public void setCartItems(List<CartItem> cartItems) {
this.cartItems = cartItems;
}
public double getGrandTotal() {
return grandTotal;
}
public void setGrandTotal(double grandTotal) {
this.grandTotal = grandTotal;
}
public String getBillingAddress() {
return billingAddress;
}
public void setBillingAddress(String billingAddress) {
this.billingAddress = billingAddress;
}
public String getShippingAddress() {
return shippingAddress;
}
public void setShippingAddress(String shippingAddress) {
this.shippingAddress = shippingAddress;
}
}
edit 2: как мне сохранить данные в таблице ustomerorder и таблице истории заказов, а также как показать их на странице jsp?