Morphia @Reference 属性删除出现The reference xxx could not be fetched for 问题解决

本文介绍了MorphiaEntity注释中的@Reference属性的使用场景和注意事项,包括如何引用公共属性文档,以及在删除引用对象时可能出现的异常情况和解决方法。

参考: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的时候,该无效的引用就会被自动清除。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值