我想创建一个查询,该查询返回存储在数据库中的实体客户端的所有 roomId。roomId 是 Client 实体中的一个属性。
我想使用这样的类型安全构造:
TypedQuery<Set<Long>> q = em.createNamedQuery("getRoomIdsByServer", Set.class);
q.setAttribute("server",server);
但是这会产生编译错误。
NamedQuery 可能看起来像这样:
@NamedQuery(name = "getRoomIdsByServer", query = "SELECT c.room_id FROM Client c WHERE c.server = :server GROUP BY c.room_id")
然而,这似乎超出了 JPQL 的范围。我们正在使用 openJPA(版本 2.2.1)
有一种解决方案可以在不使用类型化查询的情况下解决此问题,请参阅https://stackoverflow.com/a/6956037/1448704
但我想使用类型化查询来防止那些讨厌的强制转换操作。