Слой доступа к данным - чтобы сохранить элемент в базе данных, он идет в исключительной ситуации
Я также добавил модели и постоянный слой, но по какой-то причине он не добавляет порядок но все требуемые значения не равны NULL и имеют значения
У меня есть список
, а тип выборки стремится
, каждый заказ может иметь несколько элементов, и Номер заказа и номер позиции ref no автоматически генерируются в основном коде приложения
public void Add(Orders order) {
EntityManager em = DBUtil.getEmFactory().createEntityManager();
EntityTransaction trans = em.getTransaction();
try {
Provinces prov = order.getShipProvince();
prov.getOrdersList().add(order);
User user = order.getCustomer();
user.getOrdersList().add(order);
Item item = new Item();
List<OrderItem> list = order.getOrderItemList();
for (int i = 0; i < list.size(); i++) {
item = list.get(i).getItem();
item.getOrderItemList().add(list.get(i));
}
trans.begin();
em.persist(order);
trans.commit();
} catch (Exception e) {
trans.rollback();
} finally {
em.close();
}
}
package models;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
@Entity
@Table(name = "orders")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "Orders.findAll", query = "SELECT o FROM Orders o")
, @NamedQuery(name = "Orders.findByOrderNumber", query = "SELECT o FROM Orders o WHERE o.orderNumber = :orderNumber")
, @NamedQuery(name = "Orders.findByShipfname", query = "SELECT o FROM Orders o WHERE o.shipfname = :shipfname")
, @NamedQuery(name = "Orders.findByShiplname", query = "SELECT o FROM Orders o WHERE o.shiplname = :shiplname")
, @NamedQuery(name = "Orders.findByPhone", query = "SELECT o FROM Orders o WHERE o.phone = :phone")
, @NamedQuery(name = "Orders.findByOrderDate", query = "SELECT o FROM Orders o WHERE o.orderDate = :orderDate")
, @NamedQuery(name = "Orders.findByShipDate", query = "SELECT o FROM Orders o WHERE o.shipDate = :shipDate")
, @NamedQuery(name = "Orders.findByShipAddress", query = "SELECT o FROM Orders o WHERE o.shipAddress = :shipAddress")
, @NamedQuery(name = "Orders.findByShipCity", query = "SELECT o FROM Orders o WHERE o.shipCity = :shipCity")
, @NamedQuery(name = "Orders.findByShipPostalCode", query = "SELECT o FROM Orders o WHERE o.shipPostalCode = :shipPostalCode")
, @NamedQuery(name = "Orders.findByShipCost", query = "SELECT o FROM Orders o WHERE o.shipCost = :shipCost")
, @NamedQuery(name = "Orders.findByShipCompany", query = "SELECT o FROM Orders o WHERE o.shipCompany = :shipCompany")
, @NamedQuery(name = "Orders.findByTrackingnumber", query = "SELECT o FROM Orders o WHERE o.trackingnumber = :trackingnumber")
, @NamedQuery(name = "Orders.findByOrderTotal", query = "SELECT o FROM Orders o WHERE o.orderTotal = :orderTotal")})
public class Orders implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@Column(name = "Order_Number")
private String orderNumber;
@Basic(optional = false)
@Column(name = "Ship_fname")
private String shipfname;
@Basic(optional = false)
@Column(name = "Ship_lname")
private String shiplname;
@Basic(optional = false)
@Column(name = "Phone")
private String phone;
@Basic(optional = false)
@Column(name = "Order_Date")
@Temporal(TemporalType.DATE)
private Date orderDate;
@Basic(optional = false)
@Column(name = "Ship_Date")
@Temporal(TemporalType.DATE)
private Date shipDate;
@Basic(optional = false)
@Column(name = "Ship_Address")
private String shipAddress;
@Basic(optional = false)
@Column(name = "Ship_City")
private String shipCity;
@Basic(optional = false)
@Column(name = "Ship_Postal_Code")
private String shipPostalCode;
@Basic(optional = false)
@Column(name = "Ship_Cost")
private double shipCost;
@Column(name = "Ship_Company")
private String shipCompany;
@Column(name = "Tracking_number")
private String trackingnumber;
@Basic(optional = false)
@Column(name = "Order_Total")
private double orderTotal;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "orderNumber", fetch = FetchType.EAGER)
private List<OrderItem> orderItemList;
@JoinColumn(name = "Customer", referencedColumnName = "Email")
@ManyToOne(optional = false, fetch = FetchType.EAGER)
private User customer;
@JoinColumn(name = "Ship_Province", referencedColumnName = "Province_ID")
@ManyToOne(optional = false, fetch = FetchType.EAGER)
private Provinces shipProvince;
public Orders() {
}
public Orders(String orderNumber) {
this.orderNumber = orderNumber;
}
public Orders(String orderNumber, String shipfname, String shiplname, String phone, Date orderDate, Date shipDate, String shipAddress, String shipCity, String shipPostalCode, double shipCost, double orderTotal) {
this.orderNumber = orderNumber;
this.shipfname = shipfname;
this.shiplname = shiplname;
this.phone = phone;
this.orderDate = orderDate;
this.shipDate = shipDate;
this.shipAddress = shipAddress;
this.shipCity = shipCity;
this.shipPostalCode = shipPostalCode;
this.shipCost = shipCost;
this.orderTotal = orderTotal;
}
public String getOrderNumber() {
return orderNumber;
}
public void setOrderNumber(String orderNumber) {
this.orderNumber = orderNumber;
}
public String getShipfname() {
return shipfname;
}
public void setShipfname(String shipfname) {
this.shipfname = shipfname;
}
public String getShiplname() {
return shiplname;
}
public void setShiplname(String shiplname) {
this.shiplname = shiplname;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public Date getOrderDate() {
return orderDate;
}
public void setOrderDate(Date orderDate) {
this.orderDate = orderDate;
}
public Date getShipDate() {
return shipDate;
}
public void setShipDate(Date shipDate) {
this.shipDate = shipDate;
}
public String getShipAddress() {
return shipAddress;
}
public void setShipAddress(String shipAddress) {
this.shipAddress = shipAddress;
}
public String getShipCity() {
return shipCity;
}
public void setShipCity(String shipCity) {
this.shipCity = shipCity;
}
public String getShipPostalCode() {
return shipPostalCode;
}
public void setShipPostalCode(String shipPostalCode) {
this.shipPostalCode = shipPostalCode;
}
public double getShipCost() {
return shipCost;
}
public void setShipCost(double shipCost) {
this.shipCost = shipCost;
}
public String getShipCompany() {
return shipCompany;
}
public void setShipCompany(String shipCompany) {
this.shipCompany = shipCompany;
}
public String getTrackingnumber() {
return trackingnumber;
}
public void setTrackingnumber(String trackingnumber) {
this.trackingnumber = trackingnumber;
}
public double getOrderTotal() {
return orderTotal;
}
public void setOrderTotal(double orderTotal) {
this.orderTotal = orderTotal;
}
@XmlTransient
public List<OrderItem> getOrderItemList() {
return orderItemList;
}
public void setOrderItemList(List<OrderItem> orderItemList) {
this.orderItemList = orderItemList;
}
public User getCustomer() {
return customer;
}
public void setCustomer(User customer) {
this.customer = customer;
}
public Provinces getShipProvince() {
return shipProvince;
}
public void setShipProvince(Provinces shipProvince) {
this.shipProvince = shipProvince;
}
@Override
public int hashCode() {
int hash = 0;
hash += (orderNumber != null ? orderNumber.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Orders)) {
return false;
}
Orders other = (Orders) object;
if ((this.orderNumber == null && other.orderNumber != null) || (this.orderNumber != null && !this.orderNumber.equals(other.orderNumber))) {
return false;
}
return true;
}
@Override
public String toString() {
return "models.Orders[ orderNumber=" + orderNumber + " ]";
}
}
package models;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
@Entity
@Table(name = "orders")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "Orders.findAll", query = "SELECT o FROM Orders o")
, @NamedQuery(name = "Orders.findByOrderNumber", query = "SELECT o FROM Orders o WHERE o.orderNumber = :orderNumber")
, @NamedQuery(name = "Orders.findByShipfname", query = "SELECT o FROM Orders o WHERE o.shipfname = :shipfname")
, @NamedQuery(name = "Orders.findByShiplname", query = "SELECT o FROM Orders o WHERE o.shiplname = :shiplname")
, @NamedQuery(name = "Orders.findByPhone", query = "SELECT o FROM Orders o WHERE o.phone = :phone")
, @NamedQuery(name = "Orders.findByOrderDate", query = "SELECT o FROM Orders o WHERE o.orderDate = :orderDate")
, @NamedQuery(name = "Orders.findByShipDate", query = "SELECT o FROM Orders o WHERE o.shipDate = :shipDate")
, @NamedQuery(name = "Orders.findByShipAddress", query = "SELECT o FROM Orders o WHERE o.shipAddress = :shipAddress")
, @NamedQuery(name = "Orders.findByShipCity", query = "SELECT o FROM Orders o WHERE o.shipCity = :shipCity")
, @NamedQuery(name = "Orders.findByShipPostalCode", query = "SELECT o FROM Orders o WHERE o.shipPostalCode = :shipPostalCode")
, @NamedQuery(name = "Orders.findByShipCost", query = "SELECT o FROM Orders o WHERE o.shipCost = :shipCost")
, @NamedQuery(name = "Orders.findByShipCompany", query = "SELECT o FROM Orders o WHERE o.shipCompany = :shipCompany")
, @NamedQuery(name = "Orders.findByTrackingnumber", query = "SELECT o FROM Orders o WHERE o.trackingnumber = :trackingnumber")
, @NamedQuery(name = "Orders.findByOrderTotal", query = "SELECT o FROM Orders o WHERE o.orderTotal = :orderTotal")})
public class Orders implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@Column(name = "Order_Number")
private String orderNumber;
@Basic(optional = false)
@Column(name = "Ship_fname")
private String shipfname;
@Basic(optional = false)
@Column(name = "Ship_lname")
private String shiplname;
@Basic(optional = false)
@Column(name = "Phone")
private String phone;
@Basic(optional = false)
@Column(name = "Order_Date")
@Temporal(TemporalType.DATE)
private Date orderDate;
@Basic(optional = false)
@Column(name = "Ship_Date")
@Temporal(TemporalType.DATE)
private Date shipDate;
@Basic(optional = false)
@Column(name = "Ship_Address")
private String shipAddress;
@Basic(optional = false)
@Column(name = "Ship_City")
private String shipCity;
@Basic(optional = false)
@Column(name = "Ship_Postal_Code")
private String shipPostalCode;
@Basic(optional = false)
@Column(name = "Ship_Cost")
private double shipCost;
@Column(name = "Ship_Company")
private String shipCompany;
@Column(name = "Tracking_number")
private String trackingnumber;
@Basic(optional = false)
@Column(name = "Order_Total")
private double orderTotal;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "orderNumber", fetch = FetchType.EAGER)
private List<OrderItem> orderItemList;
@JoinColumn(name = "Customer", referencedColumnName = "Email")
@ManyToOne(optional = false, fetch = FetchType.EAGER)
private User customer;
@JoinColumn(name = "Ship_Province", referencedColumnName = "Province_ID")
@ManyToOne(optional = false, fetch = FetchType.EAGER)
private Provinces shipProvince;
public Orders() {
}
public Orders(String orderNumber) {
this.orderNumber = orderNumber;
}
public Orders(String orderNumber, String shipfname, String shiplname, String phone, Date orderDate, Date shipDate, String shipAddress, String shipCity, String shipPostalCode, double shipCost, double orderTotal) {
this.orderNumber = orderNumber;
this.shipfname = shipfname;
this.shiplname = shiplname;
this.phone = phone;
this.orderDate = orderDate;
this.shipDate = shipDate;
this.shipAddress = shipAddress;
this.shipCity = shipCity;
this.shipPostalCode = shipPostalCode;
this.shipCost = shipCost;
this.orderTotal = orderTotal;
}
public String getOrderNumber() {
return orderNumber;
}
public void setOrderNumber(String orderNumber) {
this.orderNumber = orderNumber;
}
public String getShipfname() {
return shipfname;
}
public void setShipfname(String shipfname) {
this.shipfname = shipfname;
}
public String getShiplname() {
return shiplname;
}
public void setShiplname(String shiplname) {
this.shiplname = shiplname;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public Date getOrderDate() {
return orderDate;
}
public void setOrderDate(Date orderDate) {
this.orderDate = orderDate;
}
public Date getShipDate() {
return shipDate;
}
public void setShipDate(Date shipDate) {
this.shipDate = shipDate;
}
public String getShipAddress() {
return shipAddress;
}
public void setShipAddress(String shipAddress) {
this.shipAddress = shipAddress;
}
public String getShipCity() {
return shipCity;
}
public void setShipCity(String shipCity) {
this.shipCity = shipCity;
}
public String getShipPostalCode() {
return shipPostalCode;
}
public void setShipPostalCode(String shipPostalCode) {
this.shipPostalCode = shipPostalCode;
}
public double getShipCost() {
return shipCost;
}
public void setShipCost(double shipCost) {
this.shipCost = shipCost;
}
public String getShipCompany() {
return shipCompany;
}
public void setShipCompany(String shipCompany) {
this.shipCompany = shipCompany;
}
public String getTrackingnumber() {
return trackingnumber;
}
public void setTrackingnumber(String trackingnumber) {
this.trackingnumber = trackingnumber;
}
public double getOrderTotal() {
return orderTotal;
}
public void setOrderTotal(double orderTotal) {
this.orderTotal = orderTotal;
}
@XmlTransient
public List<OrderItem> getOrderItemList() {
return orderItemList;
}
public void setOrderItemList(List<OrderItem> orderItemList) {
this.orderItemList = orderItemList;
}
public User getCustomer() {
return customer;
}
public void setCustomer(User customer) {
this.customer = customer;
}
public Provinces getShipProvince() {
return shipProvince;
}
public void setShipProvince(Provinces shipProvince) {
this.shipProvince = shipProvince;
}
@Override
public int hashCode() {
int hash = 0;
hash += (orderNumber != null ? orderNumber.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Orders)) {
return false;
}
Orders other = (Orders) object;
if ((this.orderNumber == null && other.orderNumber != null) || (this.orderNumber != null && !this.orderNumber.equals(other.orderNumber))) {
return false;
}
return true;
}
@Override
public String toString() {
return "models.Orders[ orderNumber=" + orderNumber + " ]";
}
}
package models;
import java.io.Serializable;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
@Entity
@Table(name = "item")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "Item.findAll", query = "SELECT i FROM Item i")
, @NamedQuery(name = "Item.findByUpsc", query = "SELECT i FROM Item i WHERE i.upsc = :upsc")
, @NamedQuery(name = "Item.findByName", query = "SELECT i FROM Item i WHERE i.name = :name")
, @NamedQuery(name = "Item.findByDescription", query = "SELECT i FROM Item i WHERE i.description = :description")
, @NamedQuery(name = "Item.findByCost", query = "SELECT i FROM Item i WHERE i.cost = :cost")
, @NamedQuery(name = "Item.findByRetailCost", query = "SELECT i FROM Item i WHERE i.retailCost = :retailCost")
, @NamedQuery(name = "Item.findByImageLink", query = "SELECT i FROM Item i WHERE i.imageLink = :imageLink")
, @NamedQuery(name = "Item.findByQuantity", query = "SELECT i FROM Item i WHERE i.quantity = :quantity")})
public class Item implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@Column(name = "Upsc")
private String upsc;
@Basic(optional = false)
@Column(name = "Name")
private String name;
@Column(name = "Description")
private String description;
@Basic(optional = false)
@Column(name = "Cost")
private double cost;
@Basic(optional = false)
@Column(name = "Retail_Cost")
private double retailCost;
@Basic(optional = false)
@Column(name = "Image_Link")
private String imageLink;
@Basic(optional = false)
@Column(name = "Quantity")
private int quantity;
@JoinColumn(name = "Category", referencedColumnName = "Category_ID")
@ManyToOne(optional = false, fetch = FetchType.EAGER)
private Category category;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "item", fetch = FetchType.EAGER)
private List<OrderItem> orderItemList;
public Item() {
}
public Item(String upsc) {
this.upsc = upsc;
}
public Item(String upsc, String name, String description, double cost, double retailCost, String imageLink, int quantity) {
this.upsc = upsc;
this.name = name;
this.description =description;
this.cost = cost;
this.retailCost = retailCost;
this.imageLink = imageLink;
this.quantity = quantity;
}
public String getUpsc() {
return upsc;
}
public void setUpsc(String upsc) {
this.upsc = upsc;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public double getCost() {
return cost;
}
public void setCost(double cost) {
this.cost = cost;
}
public double getRetailCost() {
return retailCost;
}
public void setRetailCost(double retailCost) {
this.retailCost = retailCost;
}
public String getImageLink() {
return imageLink;
}
public void setImageLink(String imageLink) {
this.imageLink = imageLink;
}
public int getQuantity() {
return quantity;
}
public void setQuantity(int quantity) {
this.quantity = quantity;
}
public Category getCategory() {
return category;
}
public void setCategory(Category category) {
this.category = category;
}
@XmlTransient
public List<OrderItem> getOrderItemList() {
return orderItemList;
}
public void setOrderItemList(List<OrderItem> orderItemList) {
this.orderItemList = orderItemList;
}
@Override
public int hashCode() {
int hash = 0;
hash += (upsc != null ? upsc.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Item)) {
return false;
}
Item other = (Item) object;
if ((this.upsc == null && other.upsc != null) || (this.upsc != null && !this.upsc.equals(other.upsc))) {
return false;
}
return true;
}
@Override
public String toString() {
return "models.Item[ upsc=" + upsc + " ]";
}
}