web-dev-qa-db-fra.com

Une relation JPA @ManyToOne peut-elle être nulle?

J'ai une table qui a la clé étrangère d'une autre table (plusieurs relations), mais je veux qu'elle soit nulle.

Quelque chose comme ça:

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;

}

Mais @Column(nullable = true) jette le NullPointerException et dit que le sous-type ne peut pas être null . Y a-t-il un moyen d’obtenir le ManyToOne accept null?

13
Narges

Vous devez définir:

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

pas optional=false.

@Column(nullable=true) consiste à indiquer à l'outil de génération DDL d'inclure une contrainte de type colonne NULL SQL.

Pour plus d'informations sur optional vs nullable, consultez cette réponse StackOverflow .

22
Vlad Mihalcea

essaye ça:

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

Seulement cela m'a aidé:

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

columnDefinition est une solution!

0
Oleksandr_DJ