本机查询结果参数未映射到类模态

时间:2014-12-17 12:10:20

标签: java spring jpa nativequery hibernate-native-query

我在JPA Repository中使用了Native Query,我的查询是:

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用户模态。我也把它放在我们的用户模态中,如as

@Transient
private String versionNo;

with getter / setter.but在视图中我将得到versionNo为null。

请帮帮我。

1 个答案:

答案 0 :(得分:0)

它为null,因为您将其注释为@Transient,因此未填充DB值。您可以在不将结果直接映射到类的情况下执行查询,并手动填充类(查询将返回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]可以使用这些列。