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?
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 .
essaye ça:
@JoinColumn(name = "subType_id", nullable = true)
Seulement cela m'a aidé:
public class TopUp {
@ManyToOne
@JoinColumn(columnDefinition="integer", name="subtype_id")
private SubType subType;
}
columnDefinition est une solution!