参考:http://blog.csdn.net/small_love/article/details/6632690
https://groups.google.com/forum/?fromgroups=#!topic/morphia/k584sz3NgKs
@Reference 是Morphia Entity注释中比较好用的一个属性,他是一个文档引用另一个文档的好的方法。
使用场景:
比如全国有名的卫视就那么多家,这个可以作为一个公共属性的文档而存在。新出了一部好看的连续剧 在东方卫视、江苏卫视、安徽卫视首播.
模型即为
@Entity
class Television{
String name;
}
@Entity
class Video{
String name;
@Reference
List<Television> tels = new ArrayList<Television>();
}
但是有个使用顺序就是Video的应用对象必须是已经存在另一个文档中。
删除的时候如果先删除了引用的电视台对象,接着再在连续剧文档中删除该引用就会报出:The reference xxx could not be fetched for 的Exception错误,找不到引用的电视台对象。
不过有一个解决方案就是加上这个属性 @Reference(ignoreMissing = true),就只会出一个警告,没有运行时错误抛出了:
2013-3-1 13:48:32 com.google.code.morphia.mapping.ReferenceMapper$1 eval
警告: Null reference found when retrieving value for com.jhy.morphia.ReferenceContactsEntity.groupStrings
当下一次对这个List<Television> tels继续操作的时候add 或者 update的时候,该无效的引用就会被自动清除。
本文介绍了MorphiaEntity注释中的@Reference属性的使用场景和注意事项,包括如何引用公共属性文档,以及在删除引用对象时可能出现的异常情况和解决方法。

2442

被折叠的 条评论
为什么被折叠?



