本文主要是介绍【Spring连载】使用Spring Data访问 MongoDB----对象映射之非包装类型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
【Spring连载】使用Spring Data访问 MongoDB----对象映射之非包装类型
- 一、未包装类型映射
- 二、未包装类型字段名
- 三、查询未包装对象
- 3.1 按未包装字段排序
- 3.2 未包装对象的字段投影
- 3.3 未包装对象的Query By Example
- 3.4 未包装对象的存储库查询
- 四、更新未包装对象
- 五、未包装对象上的聚合
- 六、未包装对象上的索引
未包装实体用于在Java领域模型中设计值对象,其属性被展平(flattened)到父类的MongoDB Document中。
一、未包装类型映射
考虑下面的域模型,其中User.name用@Unwrapped注解。@Unwrapped注解表示UserName的所有属性都应该被展平到拥有name属性的user document中。
例1:展开对象的示例代码
class User {@IdString userId;@Unwrapped(onEmpty = USE_NULL) --------1UserName name;
}class UserName {String firstname;String lastname;}
{"_id" : "1da2ba06-3ba7","firstname" : "Emma","lastname" : "Frost"
}1. 加载name属性时,如果firstname和lastname都为null或不存在,则其值设置为null。通过使用onEmpty=USE_EMPTY,将创建一个空的UserName,其属性可能为null值。
对于不太详细的可嵌入类型声明,请使用“@Unwrapped.Nullable”和“@Unwrapped.Empty”,而不是“@Unwrapped(onEmpty = USE_NULL)”和“@Unwrapped(onEmpty = USE_EMPTY)”。这两个注解都使用JSR-305“@javax.annotation.Nonnull”进行元注解,以帮助进行可空性检查。
可以在展开的对象中使用复杂类型。但是,这些字段本身不能是,也不能包含未展开的字段。
二、未包装类型字段名
通过使用@Unwrapped注解的可选前缀属性,可以多次展开值对象。通过这样做,所选择的前缀被附加到未包装对象中的每个属性或@Field(“…”)名称之前。请注意,如果多个属性呈现为相同的字段名称,则值将相互覆盖。
例2:带有名称前缀的展开对象的示例代码
三、查询未包装对象
3.1 按未包装字段排序
3.2 未包装对象的字段投影
3.3 未包装对象的Query By Example
3.4 未包装对象的存储库查询
四、更新未包装对象
五、未包装对象上的聚合
六、未包装对象上的索引
这篇关于【Spring连载】使用Spring Data访问 MongoDB----对象映射之非包装类型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!