借助模型构造函数,如何在 Spring Boot 中进行查询

Posted

技术标签:

【中文标题】借助模型构造函数,如何在 Spring Boot 中进行查询【英文标题】:How to query in Spring boot thanks to the model constructors 【发布时间】:2018-09-22 05:34:24 【问题描述】:

我想检索一个对象干预,但我的干预与其他对象相关联。例如,当我只从干预中检索信息而不与表地址建立任何链接时,它运行良好。但是我希望只能从地址表中获取街道名称,但我不知道该怎么做。

提前致谢

@Repository
interface InterventionRepository : JpaRepository<Intervention, Long> 

@Query("select new Intervention(i.id, i.date, i.wishedDate, new Address(a.streetName1)) " +
        "from Intervention i " +
        "inner join i.address a ")
fun getInterventions(): Optional<ArrayList<Intervention>>

【问题讨论】:

【参考方案1】:

最后我自己找到了解决方案,我真的做错了。 我需要在构造函数中添加地址的值。我是这样工作的:

@Repository
interface InterventionRepository : JpaRepository<Intervention, Long> 

@Query("select new Intervention(i.id, i.date, i.wishedDate, a.name) " +
        "from Intervention i " +
        "inner join i.address a ")
fun getInterventions(): Optional<ArrayList<Intervention>>

在我的构造函数中我是这样做的:

constructor(interventionId: Int?, date: Date?, addressName: String?) 

      this.id = interventionId
      this.date = date

      this.address = Address()
      this.address?.name = addressName

我不知道这是否是最好的解决方案,但我以这种方式工作,希望对其他人有所帮助。

【讨论】:

以上是关于借助模型构造函数,如何在 Spring Boot 中进行查询的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring Boot 的 @RestController 注释用于创建请求处理程序的方法中使用带有参数的构造函数

Spring Boot 构造函数自动装配异常

在 Spring Boot 中添加 servlet 过滤器时没有默认构造函数

Spring-boot,无法自动装配类。未找到默认构造函数引发异常

为啥spring boot可以在没有默认构造函数的情况下反序列化类?

未找到接口 java.util.List Rest API Spring boot 的主构造函数或默认构造函数