我想在循環中運行本機查詢,查詢顯示正確的sql語法,但輸出始終是相同的。在循環中運行nativeQuery不會返回正確的數據
for (int i=0; i<translations.size(); i++) {
Query query = entityManager.createNativeQuery("Select * from " + translations.get(i).getName(), MyModel.class);
rows = (List<MyModel>)query.getResultList();
// rest of the function...
}
現在在控制檯中,我可以看到Hibernate的語句,如:
Hibernate: Select * from translation1
Hibernate: Select * from translation2
Hibernate: Select * from translation3
但是變量「行」總是包含第一個SELECT語句translation1表即行的結果。
任何想法爲什麼在控制檯中它顯示它也從其他表中選擇,但實際上它總是從translation1表中獲取數據?
強行清除會話緩存你在這些表中有相同的id字段值? – axtavt
如果沒有在其他地方看到使用'rows',這個答案就不可能。例如,爲什麼'for'沒有在for循環中聲明? –
@axtavt是所有表都有相同的id和相同的列名稱,除了一列rowText,它包含不同語言的文本,具體取決於轉換表。 – Rizwan