2016-03-23 11 views
7

休止状態エンティティのフィールドでオプションを使用できますか?たぶん、いくつかのカスタムユーザータイプですか?Java 8エンティティフィールドのオプション

私はAccesType.FIELD(私はとにかくAccesType.FIELDを使用して)を使用する方法でそれを使用できることを知っています。

なぜ私はこれが欲しいですか?さて、私は可能な限りnullから遠く離れていたいと思っています。

答えて

1

クラス内のフィールドとして、Optionalを使用しないでください(Hibernateの使用のためかどうかにかかわらず)。

Javadocで述べたように、それは値ベースのクラスであり、したがってシリアライズ可能ではなく、参照等価(==)とIDハッシュコードを使用すると予測できない結果になります。

代わりに、ターゲットクラスのインスタンスを格納することができます(リレーショナルデータベースではnullです)。アクセサリからオプションを返します(ゲッターではなく、Hibernatesがフィールドと同じクラスを返すことを期待しています。よく)。

希望すると、これが役立ちます。

+0

オプションのequalsおよびhashCodeの実装について予測できないことはありますか?彼らはあなたがリンクしているJavadocで明確で確固たる契約を結んでいるようです。 –

+0

ショートカットは残念です。私は等号とハッシュコードを意味するのではなく、==とアイデンティティハッシュコードを意味しました。修正していただきありがとうございます。 – cdelmas