Wie behandelt JPA verbindet sich mit verfügbarem Fremdschlüssel Eintrag aber nicht verfügbar ausländischen Eintrag?

StackOverflow https://stackoverflow.com/questions/1841632

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!

War es hilfreich?

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
scroll top