Wie behandelt JPA verbindet sich mit verfügbarem Fremdschlüssel Eintrag aber nicht verfügbar ausländischen Eintrag?
-
12-09-2019 - |
Frage
Ich frage mich, wie JPA definiert folgendes Szenario zu behandeln:
Table A: | Table B:
ID FK_B | ID
1 10 | 10
2 null | 12
3 11 |
Ich möchte allen Tabelle A-Eintrag mit FK_B NULL oder nicht verfügbar Tabelle B Eintrag verweist.
public class A implements Serializable {
@Id
private Long id;
@JoinColumn(name = "FK_B", nullable = true)
@ManyToOne
private B b;
}
public class B implements Serializable {
@Id
private Long id;
}
Ist es definiert, was passiert, wenn ich
SELECT a FROM A a LEFT JOIN a.b WHERE a.b IS NULL
oder: (? Ist das möglich)
SELECT a FROM A a LEFT JOIN B b on (b = a.b) WHERE b IS NULL
Was ich brauche, ist eine Liste mit
A(id = 2)
A(id = 3)
Vielen Dank!
Lösung
Zeile # 3 in der Tabelle A ist illegal per Definition; wenn es mit der ID-Nr B
ist = 11 Sie können nicht diese Zeile in der Tabelle A
haben für Sie die Fremdschlüssel würde verletzen.
Was immer alle Zeilen aus A
wo B
null ist, Ihre erste Abfrage sollte funktionieren. Sie können auch versuchen:
SELECT a FROM A a WHERE a.b.id IS NULL
obwohl ich bin mir nicht 100% sicher, ob die gültige JPA QL Syntax (es funktioniert für Hibernate)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow