Spring Data JPA - Имя метода - @ManyToOne - PullRequest
0 голосов
/ 09 мая 2020

У меня есть объект CpoPipeline со связью ManyToOne с CpoEnvironment:

@Entity
@Table(name = "cpo_pipeline", catalog = "cup_orchestrator")
public class CpoPipeline implements java.io.Serializable {
    private String pipelineId;
    private String pipelineName;
    private CpoEnvironment cpoEnvironment;

    @Column(name = "pipeline_id", unique = true, nullable = false)
    public String getPipelineId() {
        return this.pipelineId;
    }

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "environment_id", nullable = false)
    public CpoEnvironment getCpoEnvironment() {
        return this.cpoEnvironment;
    }
    //Getters and Setters
}

Объект CpoEnvironment:

@Entity
@Table(name = "cpo_environment", catalog = "cup_orchestrator")
public class CpoEnvironment implements java.io.Serializable {

    private String environmentId;
    private String environment;
    private Set<CpoPipeline> cpoPipelines = new HashSet<CpoPipeline>(0);

    @Id
    @Column(name = "environment_id", unique = true, nullable = false)
    public String getEnvironmentId() {
        return this.environmentId;
    }

    @OneToMany(fetch = FetchType.LAZY, mappedBy = "cpoEnvironment")
    public Set<CpoPipeline> getCpoPipelines() {
        return this.cpoPipelines;
    }

    //Getters and Setters
}

Репозиторий для этого объекта с именем метода:

@Repository
public interface PipelineRep extends JpaRepository<CpoPipeline, String> {

    Optional<CpoPipeline> findByPipelineIdAndEnvironmentId(String pipelineId, String environmentId);

}

Ошибка: вызвана: org.springframework.data.mapping.PropertyReferenceException: для типа CpoPipeline не найдено свойство environmentId

Как создать имя метода, используя одно поле из сущности и одно поле из отношения? Возможно ли это?

1 Ответ

1 голос
/ 09 мая 2020

Да, возможно, чтобы использовать environmentId из CpoEnvironment сущности, используйте этот способ CpoEnvironmentEnvironmentId

Optional<CpoPipeline> findByPipelineIdAndCpoEnvironmentEnvironmentId(String pipelineId, String environmentId);
...