web-dev-qa-db-ja.com

@ManyToOne JPAリレーションをnullにすることはできますか?

別のテーブル(1対多の関係)の外部キーを持つテーブルがありますが、null可能にしたいです。

このようなもの:

_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;

}
_

しかし、@Column(nullable = true)NullPointerExceptionをスローし、サブタイプをnullにすることはできないと言います。 ManyToOneがnullを受け入れるようにする方法はありますか?

18
Narges

以下を設定する必要があります。

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

_optional=false_ではありません。

@Column(nullable=true)は、DDL生成ツールにNULL SQL列型制約を含めるように指示します。

optionalnullableの詳細については、 このStackOverflowの回答 をご覧ください。

26
Vlad Mihalcea

これを試して:

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

これだけが私を助けました:

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

columnDefinitionはソリューションです!

0
Oleksandr_DJ