我是第一个使用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]
我花了一整天时间试图找出并没有成功。有什么想法吗?