nig*_*aph 11 java mongodb morphia
我对mongodb和morphia很新,在开始使用之后,我意识到mongodb文档中有一个额外的部分,该记录包含一个字段名"ClassName",其值为morphia映射的类.
{ "_id" : ObjectId("51e7a85e300441e5885316c0"), "className" : "models.User", "imgurl" : "", "uname" : "alex"}
Run Code Online (Sandbox Code Playgroud)
这是正常的吗?我觉得它违反了数据库中数据的完整性,无论如何都要绕过它吗?
xer*_*raa 19
您可以显式禁用该className属性:@Entity(noClassnameStored = true)
如果存在单个实体类,我通常会抑制该属性.如果我是我的实体的子类,我明确地启用它(这是默认的,但只是为了确定).
如果我没有弄错的话,Morphia足够聪明,可以根据属性猜测正确的子类,即使没有className(基于反射).因此,如果您的子类Developer of Person中有一个属性mongoKnowledge,而您的子类Manager没有它,Morphia将知道mongoKnowledge的文档必须属于Developer类.因此,只有当您的子类具有相同的属性时才需要严格说明; 但是,我不会太依赖它.className
我没有尝试重命名实体类,但它可能会导致问题.提供@Polimorphic注释并将其与之一起修复是一个长期存在的问题.请参阅https://code.google.com/p/morphia/issues/detail?id=22
| 归档时间: |
|
| 查看次数: |
6855 次 |
| 最近记录: |