2016-11-02 28 views

答えて

4

@ManyToOneは、いわゆる論理モデル、つまりオブジェクト・リレーショナル・マッピングのオブジェクト指向側で動作します。 optional=falseのセマンティクスは、次のとおりです。

関連付けがオプションかどうか。 falseに設定すると、非NULL関係が常に存在する必要があります。

したがって、JPAエンジンは、基本ストレージが常にCompanyオブジェクトに変換できる値を提供すると予測します。

@JoinColumnは物理モデル、つまりデータストア(データベース)に実際にどのように記述されているかを操作します。 nullable = falseを指定すると、DB列はnullになりません。

@JoinColumn(nullable = false)を省略した場合、その列はNULL可能です。 1つはヌル値を挿入することができ、DBはそれをうまく受け入れます。しかし、誰かがJPAを通じてその値を読み取ろうとした場合、@ManyToOne(optional = false)で指定されているように、Companyオブジェクトに常に変換される値が期待されるため、JPAエンジンが抗議します。

+0

'ManyToOne :: optional'と' JoinColumn :: nullable'に異なる値を設定する場合の実際の使用例は何ですか? – Sasha

関連する問題