如何在JavaEEJPA中保持购物车项目的订单,订单包含多个项目

如何在JavaEEJPA中保持购物车项目的订单,订单包含多个项目,java,sql,database,jpa,jpql,Java,Sql,Database,Jpa,Jpql,数据访问层-要在数据库中保存项目,它将进入捕获异常 我也添加了模型和持久层,但由于某些原因,它没有添加顺序,但是,所有需要的值都不是null,并且都有值 我确实把它列在清单上了 并且获取类型是渴望的 每个订单可以有多个项目,订单号和oi项目参考号是自动的 在主应用程序代码中生成 public void Add(Orders order) { EntityManager em = DBUtil.getEmFactory().createEntityManager(); Entit

数据访问层-要在数据库中保存项目,它将进入捕获异常

我也添加了模型和持久层,但由于某些原因,它没有添加顺序,但是,所有需要的值都不是null,并且都有值

我确实把它列在清单上了

并且获取类型是渴望的

每个订单可以有多个项目,订单号和oi项目参考号是自动的 在主应用程序代码中生成

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();
    }

}

公共作废添加(订单){
EntityManager em=DBUtil.getEmFactory().createEntityManager();
EntityTransaction trans=em.getTransaction();
试一试{
prov=order.getShipProvince();
prov.getOrdersList().add(订单);
User=order.getCustomer();
user.getOrdersList().add(订单);
项目=新项目();
List=order.getOrderItemList();
对于(int i=0;i

包装模型;
导入java.io.Serializable;
导入java.util.Date;
导入java.util.List;
导入javax.persistence.Basic;
导入javax.persistence.CascadeType;
导入javax.persistence.Column;
导入javax.persistence.Entity;
导入javax.persistence.FetchType;
导入javax.persistence.Id;
导入javax.persistence.JoinColumn;
导入javax.persistence.manytone;
导入javax.persistence.namedquerys;
导入javax.persistence.NamedQuery;
导入javax.persistence.OneToMany;
导入javax.persistence.Table;
导入javax.persistence.Temporal;
导入javax.persistence.TemporalType;
导入javax.xml.bind.annotation.XmlRootElement;
导入javax.xml.bind.annotation.XmlTransient;
@实体
@表(name=“orders”)
@XmlRootElement
@命名查询({
@NamedQuery(name=“Orders.findAll”,query=“从订单o中选择o”)
,@NamedQuery(name=“Orders.findByOrderNumber”,query=“从订单o中选择o,其中o.orderNumber=:orderNumber”)
,@NamedQuery(name=“Orders.findByShipfname”,query=“从订单o中选择o,其中o.shipfname=:shipfname”)
,@NamedQuery(name=“Orders.findByShiplname”,query=“从订单o中选择o,其中o.shiplname=:shiplname”)
,@NamedQuery(name=“Orders.findByPhone”,query=“从订单中选择o,其中o.phone=:phone”)
,@NamedQuery(name=“Orders.findByOrderDate”,query=“从订单o中选择o,其中o.orderDate=:orderDate”)
,@NamedQuery(name=“Orders.findByShipDate”,query=“从订单o中选择o,其中o.shipDate=:shipDate”)
,@NamedQuery(name=“Orders.findByShipAddress”,query=“从订单o中选择o,其中o.shipAddress=:shipAddress”)
,@NamedQuery(name=“Orders.findByShipCity”,query=“从订单o中选择o,其中o.shipCity=:shipCity”)
,@NamedQuery(name=“Orders.findByShipPostalCode”,query=“从订单o中选择o,其中o.shippastalcode=:shippastalcode”)
,@NamedQuery(name=“Orders.findByShipCost”,query=“从订单o中选择o,其中o.shipCost=:shipCost”)
,@NamedQuery(name=“Orders.findByShipCompany”,query=“从订单o中选择o,其中o.shipCompany=:shipCompany”)
,@NamedQuery(name=“Orders.findByTrackingnumber”,query=“从订单o中选择o,其中o.trackingnumber=:trackingnumber”)
,@NamedQuery(name=“Orders.findByOrderTotal”,query=“从订单o中选择o,其中o.orderTotal=:orderTotal”)}
公共类Orders实现可序列化{
私有静态最终长serialVersionUID=1L;
@身份证
@基本(可选=假)
@列(name=“订单号”)
私有字符串orderNumber;
@基本(可选=假)
@列(name=“Ship\u fname”)
私有字符串shipfname;
@基本(可选=假)
@列(name=“Ship\u lname”)
私有字符串shiplname;
@基本(可选=假)
@列(name=“Phone”)
私人电话;
@基本(可选=假)
@列(name=“订单日期”)
@时态(TemporalType.DATE)
私有日期orderDate;
@基本(可选=假)
@列(name=“发货日期”)
@时态(TemporalType.DATE)
私人日期发货日期;
@基本(可选=假)
@列(name=“发货地址”)
私有字符串地址;
@基本(可选=假)
@列(name=“Ship\u City”)
私人城市;
@基本(可选=假)
@列(名称=“发货邮政编码”)
专用字符串shippestalcode;
@基本(可选=假)
@列(name=“装运成本”)
私人双重成本;
@列(name=“船舶公司”)
私营船舶公司;
@列(name=“跟踪号”)
私有字符串跟踪号;
@基本(可选=假)
@列(name=“订单总数”)
私人双订单合计;
@OneToMany(cascade=CascadeType.ALL,mappedBy=“orderNumber”,fetch=FetchType.EAGER)
私有列表orderItemList;
@JoinColumn(name=“Customer”,referencedColumnName=“Email”)
@ManyToOne(可选=false,fetch=FetchType.EAGER)
私人用户客户;
@JoinColumn(name=“Ship\u Province”,referencedColumnName=“Province\u ID”)
@ManyToOne(可选=false,fetch=FetchType.EAGER)
私营省;
公共秩序{
}
公共订单(字符串订单号){
this.orderNumber=订单号;
}
公共订单(字符串orderNumber、字符串shipfname、字符串shiplname、字符串phone、日期orderDate、日期shipDate、字符串shipAddress、字符串shipCity、字符串shipPostalCode、double shipCost、double orderTotal){
this.orderNumber=订单号;
this.shipfname=shipfname;
this.shiplname=shiplname;
this.phone=电话;
this.orderDate=orderDate;
this.shipDate=发货日期;
这是我的地址=


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 + " ]";
    }

}