gpt4 book ai didi

java - JPA与eclipse链接结果列表迭代到无穷大

转载 作者:行者123 更新时间:2023-12-01 15:19:26 24 4
gpt4 key购买 nike

我的命名查询:

@NamedQuery(name = "EmsDetails.findAll", query = "SELECT e FROM EmsDetails e")
<小时/>
private static Logger logger = Logger.getLogger(EmsDetailsDTO.class);
EntityManagerFactory emf = Persistence.createEntityManagerFactory("Employee_Mangement_SystemPU");
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();


public List<EmsDetails> getAllEMSDetails() {
List<EmsDetails> emsDetails = em.createNamedQuery("EmsDetails.findAll").getResultList();
logger.info(emsDetails.size());
for(EmsDetails e : emsDetails){
logger.info(e.getAddress());
}

return getAllEMSDetails();
}

public boolean addEmployee(EmsDetails detail){
tx.begin();
em.persist(detail);
tx.commit();
return true;
}

public void closeEM(){
em.close();
emf.close();

}

public static void main(String[] args) {
EmsDetailsDTO e = new EmsDetailsDTO();
e.getAllEMSDetails();
}
<小时/>

结果:

4:55:36,660  INFO EmsDetailsDTO:28 - 1
14:55:36,670 INFO EmsDetailsDTO:30 - I
14:55:36,670 INFO EmsDetailsDTO:28 - 1
14:55:36,670 INFO EmsDetailsDTO:30 - I
14:55:36,670 INFO EmsDetailsDTO:28 - 1
14:55:36,670 INFO EmsDetailsDTO:30 - I

使用 JPA (eclipselink) 时结果会循环到无穷大。

最佳答案

不,List 不会迭代到无穷大。正如您从日志中看到的,for 循环之外的 logger.info(emsDetails.size()) 也会被一次又一次执行。

原因是在getAllEMSDetails方法的最后调用了getAllEMSDetails。它自称。因此,改为当前的 return 语句:

return getAllEMSDetails();

以下效果更好:

return emsDetails;

关于java - JPA与eclipse链接结果列表迭代到无穷大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11168285/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com