gpt4 book ai didi

java - 如何避免 DB4o 数据库中的重复对象

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:01:37 32 4
gpt4 key购买 nike

Student s1 = new Student();
s1.rollNo = "44";
s1.name = "kk";
db4o().save(s1);

Student s2 = new Student();
s2.rollNo = "44";
s2.name = "kk";
db4o().save(s2);

这里我在 DB4o 数据库中保存了两个对象 s1 和 s2,这两个对象都被保存了,即使它们有重复的信息,我想要的是同一个 rollNo student should be saved only once 就像使用主键的关系数据库一样。我知道 DB4o 基于引用地址保存对象,如果我错了请纠正我。如果有任何方法可以实现主键功能以避免 DB4o 中的数据冗余,请告诉我。

谢谢

最佳答案

db4o 通过对象的标识来跟踪对象。所以如果你用'new'创建一个新对象,它就会被认为是一个新对象。如果你想更新一个对象,你需要获取那个对象并改变它。所以在这里:

Student toUpdate = db4o.query(new Predicate<Student>() {
@Override
public boolean match(Student student) {
return pilot.rollNo.equals("44");
}
}).get(0);

toUpdate.name ="newName";

db4o.store(toUpdate); // Updated

就是这样。 db4o 始终跟踪实际对象。不是值(value)观。

请注意,您可以 add unique constrains以避免错误。有关更新的更多信息,请参阅文档:http://community.versant.com/documentation/reference/db4o-8.1/java/reference/Content/basics/update_concept.htm

关于java - 如何避免 DB4o 数据库中的重复对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21815463/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com