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,即使它们...
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学生应该只保存一次就像使用主键的关系数据库一样.我知道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 allway跟踪实际对象.不是价值观.
注意你可以add unique constrains避免错误.有关更新的更多信息,请参阅文档:http://community.versant.com/documentation/reference/db4o-8.1/java/reference/Content/basics/update_concept.htm
本文标题为:java – 如何避免DB4o数据库中的重复对象
基础教程推荐
- Java基础之String类使用与字符串比较 2023-04-23
- Java聊天室之实现一个服务器与多个客户端通信 2023-06-23
- 纯jsp实现的倒计时动态显示效果完整代码 2023-08-03
- JSP自定义标签入门学习 2023-08-02
- 一文搞懂Java中的线程安全与线程同步 2023-01-29
- SpringBoot web静态资源映射实现步骤详解 2023-05-14
- spring cloud 集成 ribbon负载均衡的实例代码 2023-08-07
- RocketMQ 源码分析Broker消息刷盘服务 2023-07-14
- Jmeter中的timeshift()函数获取当前时间进行加减 2023-06-23
- 详解JSP中的语句对象Statement操作MySQL的使用实例 2023-08-03
