db4o的使用问题-一个环状引用导致的对象储存重复--对象的属性是引用其他对象,如果这个引用对象变化了,db4o也认为对象发生了改变,就储存两次??
大家好,我在学习使用db4o做一个餐费管理小系统时,当new Purchase,new Meal后,导致Diner,Account出现重复储存的问题,请兄弟姐妹指教。
共有5个class:
其中使用了List集合类(这个可能是导致问题的主要原因,db4o说Collection作为一个新的对象???)
测试程序使用Meal做入口,new Meal,new Purchase
只保存db.set(Meal);
Meal(purchaseList)---Purchase---Diner----Account----Desposit.
其中Account的purchaseList又包含Purchase。 形成一个对象环状引用。
测试时,先new Diner,new Account;
第一轮测试 Purchase,Meal时,Diner,Account存储没问题,没有重复。
第二轮测试,new Purchase,new Meal时,Diner,Account成倍了,第二次的Account余额不一样;Diner指向的Account也不一样。。
莫非对象的属性是引用其他对象,如果这个引用对象变化了,db4o也认为对象发生了改变,就储存两次??
Meal{
private double balance; //可用余额=despositAmount-purchaseAmount--每次统计
private double purchaseAmount; //购买支付总额--每次统计
private double despositAmount; //存款总额--每次统计
private double initPurchaseAmt; //初始欠费
private double initDespositAmt; //初始存款
private List purchaseList; //购买明细--存放历史明细
private List depositList; //存款明细-交款--存放历史明细
}
Purchase{
private String desc;
private double price;
private Date dateTime;
private int buyingType;
// 参与支付的人员
private List dinerList;
}
Diner{
private String name;
private String comment;
private String phone;
private Account account; //用餐者账户
}
Account{
private double balance; //可用余额=despositAmount-purchaseAmount--每次统计
private double purchaseAmount; //购买支付总额--每次统计
private double despositAmount; //存款总额--每次统计
private double initPurchaseAmt; //初始欠费
private double initDespositAmt; //初始存款
private List purchaseList; //购买明细--存放历史明细
private List depositList; //存款明细-交款--存放历史明细
}
Desposit{
private double amount;
private Date dateTime;
private String desc;
}