Отношение один ко многим с двумя внешними ключами - PullRequest
0 голосов
/ 10 мая 2018

У меня есть две сущности, которые образуют отношения многие ко многим.Каждый Spectrum сопоставляется с другим Spectrum, а их показатель сходства хранится в SpectrumMatch.

@Entity
public class Spectrum {
    private long id;
    private List<SpectrumMatch> matches;
    private List<SpectrumMatch> matches2;

    @OneToMany(targetEntity = SpectrumMatch.class,
        mappedBy = "querySpectrum",
        fetch = FetchType.LAZY,
        cascade = Cascade.ALL)
    public List<SpectrumMatch> getMatches()

    @OneToMany(targetEntity = SpectrumMatch.class,
        mappedBy = "matchSpectrum",
        fetch = FetchType.LAZY,
        cascade = Cascade.ALL)
    public List<SpectrumMatch> getMatches2()
}

@Entity
public class SpectrumMatch {
    private long id;
    @NotNull
    private Spectrum querySpectrum;
    @NotNull
    private Spectrum matchSpectrum;
    private double score;

    @ManyToOne(fetch = FetchType.EAGER, optional = false)
    @JoinColumn(name = "QuerySpectrumId", referencedColumnName = "Id")
    public Spectrum getQuerySpectrum();

    @ManyToOne(fetch = FetchType.EAGER, optional = false)
    @JoinColumn(name = "MatchSpectrumId", referencedColumnName = "Id")
    public Spectrum getMatchSpectrum()
}

. В этом коде поле Spectrum.matches содержит все экземпляры SpectrumMatch, где SpectrumMatch.querySpectrum.idравно этому Spectrum.id.

Однако я бы хотел, чтобы поле Spectrum.matches содержало все экземпляры SpectrumMatch, где либо SpectrumMatch.querySpectrum.id или SpectrumMatch.matchSpectrum.id равно Spectrum.id.

Возможно ли реализовать такие отношения?

...