私はmorphia 1.0.1から1.2.1にアップグレードするのに苦労しています。 1.0.1では、equals()や他の呼び出しに対するmorphia呼び出しをオーバーライドして、フェッチされた値がnullの場合に例外をスローする必要がありました。そうすることで、コールが例外なく実行された場合、値がnullのデータベースの最初のレコードが選択されたセキュリティホールが防げました。morphia 1.2.1 upgrade - FieldEndImplが現在プライベートになっています
これを行うには、Guiceモジュールでmorphia.createDatastore()をオーバーライドして特別なカスタムデータストアを返します。特別なデータストアは、Query.field()呼び出しが呼び出されたときに特殊なFieldEndを返す特別なQueryオブジェクトを返しました。このFieldEndは例外チェックを行いました。
私の特別なNotAllowingNullsFieldEndクラスは、FieldEndImplを拡張しましたが、これは現在1.2.1では非公開であるため、問題があります。
クエリが1.2.1の世界で有効な引数としてnullを受け入れないようにする方法が必要です。
解決策の1つは、NotAllowingNullsFieldEndを同じパッケージに移動することです。FieldEndImplは(org.mongodb.morphia.query)にありますが、これは本当にハックしたようです。
私はモルフィアのエキスパートではありません。実際に私はかなり新しいJavaですので、エキスパートの入力は大歓迎です。
これは私の時間の前に実装されていたので、なぜこのパスが選ばれたのかについて詳細な理由を追加する必要はありません。 。