【问题标题】:JPA by Object in the Object using an atribute that is not @IdJPA by Object 在 Object 中使用不是@Id 的属性
【发布时间】:2019-07-08 21:04:48
【问题描述】:

我想知道是否可以在不使用 @Query 注释的情况下创建 JPA,以从我正在查询的对象内的对象属性中获取结果。

我能够`List findAllById(Long id) 就好了,但我想知道是否可以进行类似的查询来查找该类中对象的属性,例如我的域名如下:

public class OcorrenciaParticipante
    @Id
    @Column(name = "cod_ocorrencia_participante")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long codigo;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "cod_ocorrencia", referencedColumnName = "cod_ocorrencia")
    private Ocorrencia ocorrencia;

public class Ocorrencia 
    @Id
    @Column(name = "cod_ocorrencia")
    private Long codigo;

我想要写类似List<OcorrenciaParticipante> findAllByOcorrencia 的内容,以使用来自Ocorrencia 类的codigo 属性获取OcorrenciaParticipante 列表。

当我执行上述操作并调用传递变量 codigo 值的端点时,我得到了异常:

java.lang.IllegalArgumentException: Parameter value [1] did not match expected type [project.model.oc.Ocorrencia (n/a)]

我已经尝试了一些使用这里的信息https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repository-query-keywords

这可能吗?

【问题讨论】:

    标签: java spring-boot jpa-2.0


    【解决方案1】:

    我认为您只需要在存储库方法签名中包含嵌套属性:

    List<OcorrenciaParticipante> findAllByOcorrenciaCodigo
    

    关于它的 Spring 文档:https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.query-methods.query-property-expressions

    有更多讨论的类似问题:Spring Data JPA find by embedded object property

    【讨论】:

    • 确实...我确定我尝试过但失败了,可能是我打错了。谢谢
    猜你喜欢
    • 2021-04-09
    • 2019-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-21
    • 1970-01-01
    • 2018-04-02
    • 2019-03-28
    相关资源
    最近更新 更多