使用不同参数多次调用的查询始终返回相同的第一个结果

时间:2011-10-24 08:59:05

标签: jboss entity resultset entitymanager

我是第一个使用jboss-4.2.3,hibernate-3.2,jpa,ejb-3的Java EE项目 我有一个如下所示的会话bean:

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]

我花了一整天时间试图找出并没有成功。有什么想法吗?

0 个答案:

没有答案