搜尋

首頁  >  問答  >  主體

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類)
有大神知道對麼?

迷茫迷茫2813 天前868

全部回覆(1)我來回復

  • 伊谢尔伦

    伊谢尔伦2017-04-18 10:58:32

    你這裡報的錯是查詢語句回傳了一個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

    回覆
    0
  • 取消回覆