我想在循环中运行本机查询,查询显示正确的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