当前位置: 代码迷 >> java >> JPA by Object 在 Object 中使用不是 @Id 的属性
  详细解决方案

JPA by Object 在 Object 中使用不是 @Id 的属性

热度:96   发布时间:2023-07-31 13:41:15.0

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

我能够`列出 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)]

我使用这里的信息尝试了一些事情

那可能吗?

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

List<OcorrenciaParticipante> findAllByOcorrenciaCodigo

关于它的 Spring 文档: :

有更多讨论的类似问题:

  相关解决方案