0
我有模型類preUpdate()
方法,該方法使用@PreUpdate進行註釋。 此方法調用我的方法deleteCache()
:@PreUpdate在選擇時觸發
public void deleteCache() {
final List<Model> models = Model.findAll();
for (final Model model : models) {
Cache.remove(model.id);
}
}
我Model.findAll()
實現:
public static List<Model> findAll() {
Query query = JPA.em().createQuery("SELECT o FROM Model o");
return query.getResultList();
}
當我觸發Model.save()我更新前的方法被調用,它調用deleteCache,但達到return query.getResultList()
時preUpdate方法被再次調用,所以我得到了StackoverflowException。
任何人都可以向我解釋爲什麼preUpdate方法被稱爲即使沒有改變模型?代碼有問題嗎?謝謝。
編輯: 我讀this後,所以em.flush()被調用。但是沒有UPDATE,INSERT調用。
你解決了嗎? – kevcodez