AlsoLoad 该字段所以提供的名字都能被加载,良好的数据迁移
Collation
ConstructorArgs
Converters
Embedded 这个类会被作为一个文档里的子文档
Entity 实体类,
EntityListeners 指定外部生命周期事件实现类
Id 用来当作MongoDB中的_id字段
Index
Indexes 列出了Morphia应该创建的索引
Preperty 改变文档中字段的名字
Reference 引用了其它的映射实体
Serialized 字段被转换成二进制,并且被存储
Text
Transient 被该注解注释,该属性不持久化
Validation 允许一个文档验证模式适用于所有写入MongoDB的定义
Version 为Entity提供一个乐观锁,动态加载,不需要设置值
@Entity
@Validation("{adt:{$gt:18}}")
@Indexes({ @Index(fields = @Field(value = "adt", type = IndexType.DESC)), @Index(fields = @Field("CHD")) })
public class AnnotationTestEntity {
@Id
private ObjectId id;// 和entity成对出现
@Property("NewName")
private String name;// 在数据库中保存的是 "NewName" : "Tim"
@Reference
private AnnotationTest annotationTest;
@Serialized
private File streamFilter;// 该对象存储的是序列化后的二进制
@Transient
private String Transient;// 数据库中没有保存该属性
@Indexed
private int adt;
@Collation(locale = "dddddd")
private int CHD;
@Version("version")
private Long Version;// 必须为long类型
@Embedded
private School school;
}
@Entity
public class AnnotationTest {
@Id
private String id;
private int i;
}
@Embedded
public class School {
private String name;
private String Address;
}
存入数据库后的结构
{
"_id" : ObjectId("58db4f3fc0044b2d7bd5bf14"),
"className" : "tops.front.operator.intl.inquirys.AnnotationTestEntity",
"NewName" : "Tim",
"annotationTest" : {
"$ref" : "AnnotationTest",
"$id" : "id"
},
"streamFilter" : { "$binary" : "H4sIAAAAAAAAABWMsRHCMAwADYQOKNgDawBKDqp0TKDzmUTBsYyskLAPJWPRMgOY5ou/v399zDKLWXV4R0tsTxR8tXseN+v3d2FmtakSaqtmW/8LCBgbOKtQbPZTUuOg5d7DWPQVqSMPyinbi3BUy8kLKoulqKHgNpA8MmRx0CNFEJ95EOeLSv8jYEqBHCpxPJSBn9ROfRjnBqYfcI2stqgAAAA=", "$type" : "00" },
"adt" : 10,
"CHD" : 145,
"version" : NumberLong(1001),
"school" : {
"name" : "diyizhongxue",
"Address" : "deizhi"
}
}
(如有不懂的请访问http://mongodb.github.io/morphia/1.3/guides/annotations/)