Listing 1

@Entity
@Table(name="ORDER_TABLE")
public class Order implement java.io.Serializable
{
   private int orderId;
   private Date orderDate;
   private Collection orderItems;


   @Id @Column(name="ORDER_ID")
   public int getOrderId() { return orderId; }

   public void setOrderId(int id) { orderId = id; }

   @OneToOne @JoinColumn("CUST_ID")
   public Customer getCustomer() { return customer; }

   public void setCustomer(Customer cust) { this.customer = cust; }

   @OneToMany(cascade={CascadeType.ALL}) @JoinColumn("ITEM_ORDER_ID")
   public Collection getOrderItems() { return orderItems; }

   public void setOrderItems(Collection items) { this.orderItems = items; }

}

Listing 2

@Stateful
public class ShoppingCartBean implements ShoppingCart
{
   @Inject EntityManager entityManager;

...

   public Order checkout()
   {
      Order order = new Order();
      order.setCustomer(this.customer);
      order.setOrderDate(new Date());
      order.setOrderItems(this.itemsInCart);
      order.setOrderStatus("INITIAL");

      entityManager.create(order);
      return Order;
   }
}

Listing 3

@Stateless
public class SessionBean implements Session
{
   @Inject EntityManager manager;

   public Customer getCustomerByName(String name)
   {
      Query query = manager.createQuery("from Customer c where c.name = :name");
      query.setArgument("name", name);
      return query.getUniqueResult();
   }

   public void updateCustomerInfo(Customer cust)
   {
      manager.merge(cust);
   }
}