Bar*_*lom 7 java generics hibernate jpa jpql
final List<Tuple> data =
em.createQuery("SELECT p.id AS i, p.membership AS m FROM Player p WHERE p.id IN :ids", Tuple.class)
.setParameter("ids", ids)
.getResultList();
Run Code Online (Sandbox Code Playgroud)
这给出了错误" Cannot create TypedQuery for query with more than one return".我可以通过省略type参数(并使用Object []而不是Tuple来解决这个问题,我后来发现):
@SuppressWarnings("unchecked")
final List<Object[]> data =
em.createQuery("SELECT p.id AS i, p.membership AS m FROM Player p WHERE p.id IN :ids")
.setParameter("ids", ids)
.getResultList();
Run Code Online (Sandbox Code Playgroud)
但是,是否有一个不需要未经检查的代码的解决方案?
Tom*_*son 11
元组实际上并不比数组更安全,是吗?
你在这里可以做的是使用构造函数表达式.在我的头顶,这是这样的:
class PlayerMembership {
public final int id;
public final MembershipType membership;
public PlayerMembership(int id, MembershipType membership) {
this.id = id;
this.membership = membership;
}
}
List<PlayerMembership> data =
em.createQuery("SELECT NEW nl.bart.PlayerMembership(p.id, p.membership) FROM Player p WHERE p.id IN :ids", PlayerMembership.class)
.setParameter("ids", ids)
.getResultList();
Run Code Online (Sandbox Code Playgroud)
这需要您编写一个新类来保存结果,但这通常是非常简单的.
| 归档时间: |
|
| 查看次数: |
12745 次 |
| 最近记录: |