search

Home  >  Q&A  >  body text

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类)
有大神知道对么?

迷茫迷茫2803 days ago857

reply all(1)I'll reply

  • 伊谢尔伦

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

    The error you reported here is that the query statement returned an Object[] array. Jpa tried to convert it into your custom object, but failed. You can try the following method:

    1. Use the syntax of select new + the full class name of the object,
      Here Perso is the entity managed by EntityManager, and PersonResult is the custom entity

      @Query(select new com.xx.yy.PersonResult(p.id,p.name,p.age) from Person p)
       List<PersonResult> findPersonResult();
    2. Use Object[] array to receive data. Each element value in Object[] is the value of the corresponding column

      @Query(select p.id,p.name,p.age from Person p)
       List<Object[]> findPersonResult();
    3. First find Person and convert it into PersonResult using java code

    reply
    0
  • Cancelreply