我在 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;
从我的查询中,我得到了未映射到mu用户模式的"版本号"。我也把它放在我们的用户模式中,就像
@Transient
private String versionNo;
与是getter/setter.但从视图中,我将得到版本No是空的。
请帮助我。
它是空的,因为您将其注释为 @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);
}
results
列表中的每个条目都是一个对象数组,表示本机查询返回的行。列在您选择列时排序,因此如果您将versionNo
放在子句SELECT
的第一位,它将与 result[0]
一起使用。