2014-02-15 61 views
0

目前,我使用OrmLite,並且我有三個對象A,B和C.A包含B的ForeignCollection,B包含C的ForeignCollection。每當我向ForeignCollections添加一個元素時,立即執行一條insert語句。刪除語句會在我刪除某個元素時立即執行。OrmLite - 在添加或刪除ForeignCollection時防止自動更改數據庫

我想添加/刪除沒有被執行的語句,直到我創建或更新A.這可能嗎?

回答

1

我想添加/刪除沒有正在執行的語句,直到我創建或更新A.這是可能的嗎?

沒有辦法目前做到這一點。延遲加載的集合本身甚至不存儲項目,因此稍後的緩存更改的想法是不可能的。

你可以這樣做你自己不過。您可以保留實體中的項目列表,然後覆蓋dao.create(...)dao.update(...)方法,以便在特殊集合中存在任何緩存項目時調用collection.addAll(...)

private List<Item> foreignItemsToAdd; 
... 
private void addForeignItem(Item item) { 
    if (foreignItemsToAdd == null) { 
     foreignItemsToAdd = new ArrayList<Item>(); 
    } 
} 

然後道會碰到這樣的:

@Override 
public int create(ParentItem parent) throws SQLException { 
    if (parent.getForeignItemsToAdd() != null) { 
     parent.getForeignItems().addAll(parent.getForeignItemsToAdd()); 
    } 
    return super.create(parent); 
} 
相關問題