0

我在 JPA 存储库中使用了本机查询,我的查询如下:

select u.*, max(a.version_no) as versionNo from users u left join andother_table a on u.id=a.user_id  where u.title='abc' group by id;

从我的查询中,我得到了“versionNo”,它没有映射到 mu 用户模式。我也把它放在我们的用户模式中,比如

@Transient
private String versionNo;

with 是 getter/setter.but 在视图中我会得到 versionNo 为空。

请帮我。

4

1 回答 1

0

它为空,因为您将其注释为@Transient,因此它没有填充数据库值。您可以在不将结果直接映射到您的类的情况下执行查询,并手动填充类(查询将返回 的列表Object[])。除此之外,我不知道有任何替代方案(因为@Transient)。

List<Object[]> results = session.createNativeQuery("select max(a.version_no) as versionNo, u.* from users u left join andother_table a on u.id=a.user_id  where u.title='abc' group by id").list();
List<MyClass> myClasses = new ArrayList<MyClass>();
for (Object[] result : results) {
    MyClass mc = new MyClass();
    ...
    mc.setVersionNo(result[0]);
    mc.setSomethingElse(result[1])
    ...
    myClasses.add(mc);
}

list 中的每个条目results都是一个对象数组,表示本机查询返回的一行。列在您选择时按顺序排列,因此如果您将子句versionNo放在首位SELECT,它将与result[0].

于 2014-12-17T12:35:25.797 回答