View Javadoc
1   package ejava.examples.asyncmarket.jpa;
2   
3   import java.util.List;
4   import java.util.Map;
5   
6   import javax.persistence.EntityManager;
7   import javax.persistence.Query;
8   
9   import ejava.examples.asyncmarket.bo.Order;
10  import ejava.examples.asyncmarket.dao.OrderDAO;
11  
12  public class JPAOrderDAO implements OrderDAO {
13      private EntityManager em;
14  
15      public void setEntityManager(EntityManager em) {
16          this.em = em;
17      }
18  
19      public Order createOrder(Order order) {
20          em.persist(order);
21          return order;
22      }
23  
24      public Order getOrder(long orderId) {
25          return em.find(Order.class, orderId);
26      }
27  
28      @SuppressWarnings("unchecked")
29      public List<Order> getOrdersforItem(long itemId, int index, int count) {
30          return em.createNamedQuery("AsyncMarket_getOrdersForItem")
31                          .setParameter("itemId", itemId)
32                          .setFirstResult(index)
33                          .setMaxResults(count)
34                          .getResultList();
35      }
36  
37      @SuppressWarnings("unchecked")
38      public List<Order> getOrders(int index, int count) {
39          return em.createNamedQuery("AsyncMarket_getOrders")
40                   .getResultList();
41      }
42  
43      public Order updateOrder(Order order) {
44          return em.merge(order);
45      }
46  
47      @SuppressWarnings("unchecked")
48      public List<Order> getOrders(
49          String queryString, Map<String, Object> params, int index, int count) {
50          Query query = em.createQuery(queryString)
51                          .setFirstResult(index)
52                          .setMaxResults(count);
53          if (params != null) {
54              for (String name: params.keySet()) {
55                  query.setParameter(name, params.get(name));
56              }
57          }
58          return query.getResultList();
59      }
60  }