2015-09-21 2 views
0

Я начинаю с весенней загрузки и JPA 2.0. Мой api запускает запрос из mysql db, который имеет одну запись. По какой-то причине API возвращает результирующий набор запросов без остановок.Весенние атрибуты API загрузки загружаются несколько раз

Забавно, что если я верну свой размер вектора, он отлично работает, но когда я возвращаю список <>, он выполняет несколько раз тот же код.

Я подозреваю, что мне может потребоваться установить флаг для остановки соединения или чего-то еще. Любые идеи о том, что может быть причиной этого?

//controller 
    @RestController 
    public class ClientController { 


      @RequestMapping("/client") 
      public List<Client> client(@RequestParam(value="name", defaultValue="World") String name) { 

       Client clientModel = new Client(); 
       List<Client> clients = clientModel.getClients(); 

       //return clients.size(); 
       return clients; 


      } 
    } 





    //model 
    public List<Client> getClients() { 

      try { 
       EntityManagerFactory emf = Persistence 
         .createEntityManagerFactory("CRM"); 
       EntityManager em = emf.createEntityManager(); 
       CriteriaBuilder cb = em.getCriteriaBuilder(); 
       CriteriaQuery<Client> q = cb.createQuery(Client.class); 
       Root<Client> c = q.from(Client.class); 
       q.select(c); 
       List<Client> clients = em.createQuery(q).getResultList(); 
       // ArrayList<Client> clients = (ArrayList<Client>) q.select(c); 
       em.close(); 
       emf.close(); 

       return clients; 
      } catch (Exception e) { 
       throw e; 
      } 
     } 
+0

У вас есть только одна запись в БД? – leeor

+0

Я уверен. API продолжает возвращать несколько списков с одной и той же записью. Когда я раскомментирую вызов .size(), он возвращает 1. Также, когда я запускаю его в режиме отладки, точка останова обращается несколько раз в вызов метода. – wdoering

+0

@wdoering Я считаю, что проблема не в коде, который вы отправили, это скорее всего в вашем интерфейсе. Не могли бы вы протестировать соответствующий REST API, используя [curl] (https://wiki.duraspace.org/display/DURACLOUDDOC/REST+API+Examples+Using+curl) или [Почтальон] (https://www.getpostman.com /) и еще раз скажите, что произойдет? – jweyrich

ответ

1

Не нашли причину проблемы, но нашли решение. В первой версии я выполнял запрос в том же классе, где я определил свой клиент @entity. Я создал новый класс ClientRepository и переместил в него запрос. Проблема остановлена.

Я думаю, JPA не нравится ...

Смежные вопросы