Я в своем первом проекте Java EE, работающем с jboss-4.2.3, hibernate-3.2, jpa, ejb-3
У меня есть сессионный компонент, который выглядит следующим образом:
package ...
import javax.persistence.EntityManager;
import javax.persistence.Query;
import ...
@Stateless
public class myBean implements myBeanLocal {
@PersistenceContext(unitName = "dbPU")
private EntityManager em;
@Override
public List<Item> retrieveItems (int someId) {
String nativeQuery = "SELECT * FROM myFunc(:someId)";
Query query = em.createNativeQuery(nativeQuery, Item.class);
query.setParameter("someId", someId);
List<Item> items = (List<Item>) query.getResultList();
for (Item item : items) {
System.out.println(String.format(
"[%s, %s]", item.getId(), item.getQty()
));
}
return items;
}
@Override
public void test () {
for (int i = 1; i <= 3; i++) {
retrieveItems(i);
}
}
}
Итак, когда я вызываю тестовый метод, собственный запрос выполняется 3 раза с разными параметрами;проблема в том, что после первого выполнения результат такой же, как и в первом.
Я проверил с помощью jdbc, и результаты оказались такими, как ожидалось.
// results using jdbc
[1, 5]
[2, 7]
[3, 6]
// results using NativeQuery (or NamedQuery)
[1, 5]
[1, 5]
[1, 5]
Я потратил весь день, пытаясь выяснить, но безуспешно.Есть идеи?