morphia 1.2.1 升级 - FieldEndImpl 现在是私有的

morphia 1.2.1 upgrade - FieldEndImpl is now private

我正在努力从吗啡 1.0.1 升级到 1.2.1。在 1.0.1 中,我们必须覆盖 morphia 对 equals() 的调用以及其他调用以在获取的值为 null 时抛出异常。这样做可以防止出现安全漏洞,如果调用无异常地运行,数据库中第一条值为 null 的记录将被选中。

为此,我们将 Guice 模块中的 morphia.createDatastore() 覆盖为 return 一个特殊的自定义数据存储。特殊数据存储 returned 一个特殊的 Query 对象,当 Query.field() 调用被调用时,该对象 returned 一个特殊的 FieldEnd。这个 FieldEnd 做了异常检查。

成功了,但是我们特殊的 NotAllowingNullsFieldEnd class 扩展了 FieldEndImpl,它现在在 1.2.1 中是私有的,所以我遇到了问题。

我们需要一种方法来阻止查询接受 null 作为 1.2.1 世界中的有效参数。

一个解决方案是将 NotAllowingNullsFieldEnd 移动到 FieldEndImpl 所在的同一个包 (org.mongodb.morphia.query) 但这看起来真的很老套。

我不是吗啡专家,实际上我对 java 还很陌生,所以欢迎任何专家的意见。

仅供参考,这个实现是在我之前完成的,所以关于为什么选择这条路径的深入原因我没有太多要补充的,我只是被要求做升级。

Morphia 1.3.2 class FieldEndImpl 回到 public