請教db4o delete物件後,關聯物件未刪除

gltbeyond發表於2011-04-25
請教各位兄弟,小弟在使用db4o 儲存一個物件CacheV2Element,有3個屬性。

public class CacheV2Element {
	private String key;
	private KeyedCollection kcoll;
	//milliseconds
	private long age;
。。。
}
<p class="indent">


其中的KeyedCollection 是個複雜些的物件。KeyedCollection 裡面可以放任何物件。也可以放KeyedCollection 。在我刪除一個CacheV2Element後,發現KeyedCollection 物件並沒有刪除掉。

public class KeyedCollection extends DataElement implements Map {

	private Map dataElements;

	private List dataNames;

	public KeyedCollection() {
		super();
		dataElements = new HashMap();
		this.dataNames = new ArrayList();
	}
        ..........
}
<p class="indent">


刪除和更新的時候,我加了:

 this.odb.ext().refresh(element, 5);
這個5,我不確定物件的深度為多少???
	/**
	 * 刪除快取中的物件,並且順帶刪除過期的物件
	 * */
	public void delete(final String journalNo) {
		try{
			this.odb=Db4oCP.getODBConnection();
			CacheV2Element element=this.queryCacheV2Element(journalNo);
			if(element!=null){
				
				this.odb.delete(element);
				this.odb.ext().refresh(element, 5);
				this.odb.commit();
				Trace.logDebug(Trace.COMPONENT_JDBC, "SessionCacheV2 delete key="+journalNo);
			}
			//call delete all.
			deleteGarbage();
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			Db4oCP.release(this.odb);
		}
	}
<p class="indent">

相關文章