java - Jpa返回对象必须是与Entity类么?

查看:141
本文介绍了java - Jpa返回对象必须是与Entity类么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

  @Query(value = "SELECT id as topicId,content FROM bbs_topic WHERE create_time BETWEEN ?1 AND ?2",nativeQuery = true)
    List<IndexObject> getBbsTopicListByDate(Date fileupdateDate, Date topiclastupdate);

其中IndexObject 是显示层vo。
然后报错

org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.Object[]] to type [com.wayne.common.lucene.entity.IndexObject] for value '{59, 再发表一次看看那}'; nested exception is org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [java.lang.Integer] to type [com.wayne.common.lucene.entity.IndexObject]

度娘了一下
怀疑 jpa返回对象必须是与Entity类相关(Entity就是配置了Java类与数据库映射的Java类)
有大神知道对么?

解决方案

你这里报的错是查询语句返回了一个Object[]数组,Jpa尝试转换成你自定义的对象,但是失败了,可以试试以下的方式:

  1. 使用select new +对象全类名 的语法,
    此处的Perso 为EntityManager 管理的实体,PersonResult为自定义的实体

    @Query(select new com.xx.yy.PersonResult(p.id,p.name,p.age) from Person p)
     List<PersonResult> findPersonResult();

  2. 使用Object[]数组来接收数据 ,Object[]中的每一个元素值就是对应列的值

    @Query(select p.id,p.name,p.age from Person p)
     List<Object[]> findPersonResult();

  3. 先查出Person ,用java代码转换成PersonResult

这篇关于java - Jpa返回对象必须是与Entity类么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆