Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 本机查询结果参数未映射到类模式_Java_Spring_Jpa_Nativequery_Hibernate Native Query - Fatal编程技术网

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

Java 本机查询结果参数未映射到类模式,java,spring,jpa,nativequery,hibernate-native-query,Java,Spring,Jpa,Nativequery,Hibernate Native Query,我已经在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; 使用的是getter/se

我已经在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;
使用的是getter/setter。但在视图中,我将获得版本号为null


请帮帮我。

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

List results=session.createNativeQuery(“从用户中选择max(a.version_no)作为versionNo,u.*,u.id=a.user_id,其中u.title='abc'按id分组”).List();
List myClasses=new ArrayList();
对于(对象[]结果:结果){
MyClass mc=新的MyClass();
...
mc.setVersionNo(结果[0]);
mc.setSomethingElse(结果[1])
...
添加(mc);
}

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

一起提供,您可以描述我如何将变量映射到模态类。
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);
}