1
好的。我想要的是: 使用Hibernate,加載一次MyEntity對象列表,並將該列表作爲jtable模型的內部數據。我也有一個jTextField,當鍵入一個鍵時,我調用我的模型的一個方法,它將jtextfield的文本作爲參數,並過濾MyEntitys的內部列表並觸發tablemodel更改事件。我想要做這個過濾而不必每次都敲擊數據庫。在內存中過濾不休眠的收集與休眠
我所做的是: 我在模型中保留了2個列表:一個名爲initialList,只有一次使用createCriteria(...).list()加載,第二個列表名爲filteredList,只要刷新方法被稱爲它是這樣填充:
public void refresh(String filterText)
{
filteredList = session.createFilter(initialList, "where property= ?")
.setParameter(0, filterText)
.list();
}
然後,我用這個過濾列表給jtable的行,列值。 嗯,它沒有工作,因爲Hibernate說過濾器API的東西只能用於持久集合。所以,我有以下3個問題:
- Essentialy如果我創建一個虛擬父實體將包含所有myEntity所行作爲子集並加載該父虛擬實體(在數據庫中的虛擬父表一起) ,這將工作?如果是的話,這聽起來很愚蠢,只是爲了讓hibernate考慮集合的持久性,並讓我使用過濾器的東西。我錯過了什麼?
- 假設我確實擁有一個持久集合並使用了過濾器API,這是否保證除了初始加載之外,我不會碰到數據庫?我不在乎被更新,只加載一次,然後快速過濾,因爲我需要過濾每次用戶按下一個鍵。
- 是否有任何其他方式來獲得此功能。我想我可以手動使用Java Collections API來對過濾器索引和東西進行排序,但是可以使用其他任何現成的方法?
在此先感謝。