0
时失速我想执行下列选择使用JPA:休眠试图执行JPA查询Sybase上
select * from permissions_table where permissions.role in ("Role1", "Role2")
我到目前为止是这样的:
protected Set<String> getPermissions(Connection conn, String username, Collection<String> roleNames) throws SQLException {
PreparedStatement ps = null;
Set<String> permissions = new LinkedHashSet<String>();
try {
EntityManager em = entityManagerFactory.createEntityManager();
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<HierarchicalPermission> criteria = builder.createQuery(HierarchicalPermission.class);
Root<HierarchicalPermission> permission = criteria.from(HierarchicalPermission.class);
criteria.select(permission).where(permission.get("Role").in(roleNames));
List<HierarchicalPermission> hPermissions = em.createQuery(criteria).getResultList();
for (HierarchicalPermission p : hPermissions) {
System.out.println("Permission (" + p.getRole() +")");
}
}
catch(Exception ex)
{
System.out.println(ex.getMessage());
}
finally {
JdbcUtils.closeStatement(ps);
}
return permissions;
}
当我跨过这条线:
List<HierarchicalPermission> hPermissions = em.createQuery(criteria).getResultList();
我看到我的Eclipse输出窗口如下:
Hibernate: select hierarchic0_.iIdentity as iIdentity0_, hierarchic0_.timestamp as timestamp0_, hierarchic0_.szRole as szRole0_, hierarchic0_.szDescription as szDescri4_0_, hierarchic0_.iResource as iResource0_ from occ.ROLE_PERMISSIONS hierarchic0_ where hierarchic0_.szRole in (?)
和Eclipse调试器似乎失速。此时,我只能暂停或停止执行,如此屏幕截图所示。
这是什么意思?这不是上述查询的有效表示吗?
那么,这是一个日食调试问题?当你使用Run配置而不是使用Debug配置来执行它时会发生什么? – 2012-07-13 22:30:20
同样的效果。我看到“Hibernate:select hierarchyic0_.iIdentity as iIdentity0_,hierarchic0_.timestamp as timestamp0_,hierarchic0_.szRole as szRole0_,hierarchic0_.szDescription as szDescri4_0_,hierarchic0_.iResource as iResource0_ from occ.ROLE_PERMISSIONS hierarchic0_ where hierarchyic0_.szRole in(?)”in输出窗口和执行似乎已停止。 – 2012-07-16 14:41:42