Anmerkung zum Verknüpfen von Spalten mit ODER-Bedingung anstelle von UND-Bedingung

Ich habe 2 Java-Klassen,Relation undPerson, die beide in meiner Datenbank vorhanden sind.

Person

@Entity
@Table(name = "persons")
public class Person {
    @Id
    @Column
    private int id;

    @Column
    private String name;

    @OneToMany(fetch = FetchType.EAGER)
    @JoinColumns({
        @JoinColumn(name = "slave_id", referencedColumnName="id"),
        @JoinColumn(name = "master_id", referencedColumnName="id")
    })
    private List<Relation> relations;

    //Getters and setters
}

Beziehung

@Entity
@Table(name = "relations")
public class Relation {
    @Id
    @Column
    private int id;

    @Column
    private int child_id;

    @Column
    private int parent_id;

    @Column
    private String type;

    //Getters and setters
}

Jede Person hat eine Liste von Beziehungen (oder nicht). Die Beziehung sollte der Liste hinzugefügt werden, wenn die child_id oder die parent_id der Beziehung gleich der id der Person ist.

TL; DR: Wennrelation.child_id OR relation.parent_id = person.id => Relation zur Liste der Relationen zur Person hinzufügen

Das Problem, mit dem ich konfrontiert bin, ist, dass diese Anmerkung:

@JoinColumns({
            @JoinColumn(name = "child_id", referencedColumnName="id"),
            @JoinColumn(name = "parent_id", referencedColumnName="id")
        })

erzeugt folgendes SQL (nur den notwendigen Teil):

relations relations6_ 
            on this_.id=relations6_.slave_id 
            and this_.id=relations6_.master_id

Was ist die richtige Anmerkung in Java Hibernate, um eine SQL-Anweisung mit der Aufschrift @ zu generiereODE Anstatt vonUN

Antworten auf die Frage(4)

Ihre Antwort auf die Frage