web-dev-qa-db-ger.com

Kann eine @ManyToOne-JPA-Beziehung null sein?

Ich habe eine Tabelle, die Fremdschlüssel einer anderen Tabelle hat (viele zu einer Beziehung), aber ich möchte, dass es nullable ist.

Etwas wie das:

public class SubType() {

    @Id
    @GeneratedValue(generator = "system-uuid")
    @GenericGenerator(name = "system-uuid", strategy = "uuid")
    private String id;

}

public class TopUp {

    @Column(nullable = true)
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private SubType subType;

}

Aber @Column(nullable = true) wirft die NullPointerException und sagt, dass der Subtyp nicht null sein kann. Gibt es eine Möglichkeit, die ManyToOne-Akzeptanz auf null zu setzen?

13
Narges

Sie müssen einstellen:

@ManyToOne(optional = true, fetch = FetchType.LAZY)

nicht optional=false.

@Column(nullable=true) weist das DDL-Generierungswerkzeug an, eine NULL SQL-Spaltentypeinschränkung aufzunehmen.

Weitere Informationen zu optional vs. nullable finden Sie unter dieser StackOverflow-Antwort .

22
Vlad Mihalcea

versuche dies:

@JoinColumn(name = "subType_id", nullable = true)
3
Sarwar kamal

Nur das hat mir geholfen:

public class TopUp {
    @ManyToOne
    @JoinColumn(columnDefinition="integer", name="subtype_id")
    private SubType subType;
}

columnDefinition ist eine Lösung!

0
Oleksandr_DJ