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