[英]Spring boot API criteria returning multiple times
我從Spring Boot和JPA 2.0開始。 我的api從具有單個記錄的mysql數據庫運行查詢。 由於某些原因,API會不停地返回查詢結果集。
有趣的是,如果我返回Vector的大小,它可以正常工作,但是當我返回List <>時,它會多次運行相同的代碼。
我懷疑可能必須為連接停止或其他設置一些標志。 關於什么可能導致此的任何想法?
//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;
}
}
找不到問題的根本原因,但找到了解決方案。 在第一個版本中,我在定義Client @entity的同一類中實現查詢。 我創建了一個不同的類“ ClientRepository”,並將查詢移入其中。 問題停止了。
我猜JPA不喜歡這樣...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.