关于morphia删除数据

hello++ 发布于 2012/03/29 00:12
阅读 539
收藏 0

Person类:

@Entity
public class Person {
	@Id
	private Integer id;
	private String name;
	private Integer age;
	@Embedded
	List<Email> emails;
}

Email类:

@Embedded
public class Email{
	@Id
	private Integer id;
	private String email;	
}

数据:

Person [id=1, name=haha, age=10, 

            emails=[Email [id=1, email=abc@abc.com], 

                         Email [id=2, email=aaa@aaa.com],

                          Email [id=3, email=ccc@ccc.com]]

            ]

现在我想要删除id为1的person的这条数据里的 id为1的email数据,即只删除对应的email数据,

请问我应该怎么写Query和UpdateOperations

谢谢!

 

加载中
0
hello++
hello++
有人能解答吗?
0
hello++
hello++
求高人指点一下。。。。
0
hello++
hello++

我自己解答:

Query<Person> query = ds.getQuery(Person.class).field("id").equal(person.getId)
                        .filter("emails.id", email.getId());
UpdateOperations<Person> ops = ds.getUpdateOperations(Person.class).disableValidation();
ops.removeAll("emails", new BasicDBObject("id", email.getId()));
ds.update(query, ops);

 

0
牛牛牛牛
牛牛牛牛

Person  =>List<Email> emails;  

emails用Map做不就好了

更新一个put方法

删除一个remove

返回顶部
顶部