当前位置: 首页 > 知识库问答 >
问题:

Spring中带有@Query注释的本机查询

贡威
2023-03-14

我对Spring中的原生查询有一个问题。我在param value中使用了带有参数nativequery=true注释@query和SQL查询。

@Query(value = "select d.DATA, pt.POKOJTYP_ID, pt.POKOJTYP_NAZWA, 10 \n" +
        "from LISTADAT(:data_od, :data_do) d \n" +
        "left join POKOJTYP pt on 1=1 \n" +
        "order by d.DATA, pt.POKOJTYP_NAZWA",
        nativeQuery = true)
List<DostepnoscTypyListDTO> getDostepnoscNaTypy(
        @Param("data_od") Date dataOd,
        @Param("data_do") Date dataDo);
@GetMapping("/getDostepnoscNaTypy")
public @ResponseBody
List<DostepnoscTypyListDTO> getDostepnoscNaTypy(Date dataOd, Date dataDo) {               
   return rezMgr.getDostepnoscNaTypy(dataOd, dataDo);
}

而在RezerWacjamanager.java中:

public List<DostepnoscTypyListDTO> getDostepnoscNaTypy(Date dataOd, Date dataDo) {     
    return rezerwacjaDao.getDostepnoscNaTypy(dataOd, dataDo);
}

问题是什么时候调用方法RezerWacjadao.getDoStepnosCnatypy(dataOd,dataDo)并执行此查询。我得到一个错误错误:

"Failed to convert from type [java.lang.Object[]] to type [ekoncept.dto.DostepnoscTypyListDTO] for value '{2018-05-01 00:00:00.0, 4, Apartament, 10}'; nested exception is org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [java.sql.Timestamp] to type [ekoncept.dto.DostepnoscTypyListDTO]",

DoStepNosCtypyListdTo.java:

public class DostepnoscTypyListDTO {

   @Getter @Setter private Integer pokojtypId;
   @Getter @Setter private String pokojtypNazwa;
   @Getter @Setter private String naDzien;
   @Getter @Setter private Integer ileDostepnych;

    public DostepnoscTypyListDTO(
            String naDzien, Integer pokojtypId, String pokojtypNazwa,
            Integer ileDostepnych) {

        this.pokojtypId = pokojtypId;
        this.pokojtypNazwa = pokojtypNazwa;
        this.naDzien = naDzien;
        this.ileDostepnych = ileDostepnych;
    }

    public DostepnoscTypyListDTO(
            Timestamp naDzien, //Date naDzien,
            Integer pokojtypId, String pokojtypNazwa,
            Integer ileDostepnych)  {

        SimpleDateFormat df= new SimpleDateFormat("yyyy-MM-dd");
        this.naDzien = df.format(naDzien);  //naDzien;

        this.pokojtypId = pokojtypId;
        this.pokojtypNazwa = pokojtypNazwa;
        this.ileDostepnych = ileDostepnych;
    }
}

共有1个答案

鄢承运
2023-03-14

您需要指定如何将DB返回的响应映射到所需的对象中。

默认情况下,本机查询返回Object[],并且需要将其映射到您的类。检查其他帖子:使用本机查询从Spring数据返回自定义对象

 类似资料:
  • 我一直试图理解HQL和JPQL之间的区别。冬眠留档在这里 建议写入选择是JPQL所必需的,但不是在HQL中。但是当我尝试在Spring数据JPA的查询注释中编写HQL或JPQL时,HQL和JPQL都可以工作。 我的理解是,既然查询注释是针对JPA的,为什么支持HQL? 或者让我换个说法- 我们可以在查询注释中编写HQL吗——Spring数据JPA支持两者吗?

  • 我的服务是这样的: 存储库: 当尝试执行时。它返回“查询没有返回结果”,Hibernate SQL调试器表示只有第1个查询有效。“Hibernate:创建或替换view camera_layout AS select layout_id,unnest(layout.camera_ids)AS camera_id from layout”其余部分分解,尽管它们应该能帮助我,但我还是提前感谢

  • 关于注释和注释,我遇到了一个有趣的问题在Spring Boot项目上,spring data jpa也在项目中。 基本上,我有软删除机制,这是为实体设置一个有效的日期(例如属性列在实体类中带有属性)。这些实体用注释类似于。这样,将设置为now和before的软删除的实体自动删除。(例如实体类) 我还有一些其他实体没有(例如实体类) 以及其他一些可用的表。如果是Jpa查询带注释的方法。我正面临着一些

  • 当我将此查询添加到我的存储库时,它给出了一个奇怪的错误。请帮助 我在Oracle中测试过这个查询,我很好,为什么它在这里不工作请帮助? 我正在尝试从我的服务类调用此方法,并收到此错误

  • 问题内容: 我正在使用Spring和Hibernate和MySQL开发应用程序。我是Hibernate的新手,做了基本任务… 现在,我需要在选择查询中应用联接,以使用注释从多个表中获取数据。我已经搜寻过,但仍然不知道… 这是我的数据库表和bean类: 我的bean类是: EmployeeInfoForm.java EmployeeLoginForm.java 需求: 我想选择字段 EMPID,em

  • 我已经用自定义注释注释了Spring bean,但似乎Spring在创建bean后删除了我的自定义注释。 第二步不行,我的自定义注释丢失了。(可能是到期的代理文件) 我的豆子 我的一个自定义注释的示例 findAndDoStuffWithAnnotatedThings Bean中出错的内容被传递到一个类,在该类中,我的自定义注释得到验证,但我的验证程序找不到任何注释。(Util使用isAnnota