Многократный запрос с разными параметрами всегда возвращает один и тот же первый результат - PullRequest
1 голос
/ 24 октября 2011

Я в своем первом проекте 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]

Я потратил весь день, пытаясь выяснить, но безуспешно.Есть идеи?

...