2
我正在編寫一個搜索界面,用戶可以從幾個不同實體的字段中進行選擇。這是一個使用Hibernate的Spring MVC(3.0.5)應用程序3如何判斷一個Criteria實例是否已經有一個Subcriteria?
我的DAO類必須能夠靈活地響應這些請求。我想用的方法是這樣的:
critAliases = new ArrayList<String>();
...
Session session = (Session) getEntityManager().getDelegate();
crit = session.createCriteria(RootEntity.class);
// selected search options from user
for (SearchOption opt: searchOptionList) {
if (! critAliases.contains(opt.getAlias())) {
crit.addAlias(opt.getEntityName(), opt.getAlias(), opt.getJoinType());
critAliases.add(opt.getAlias());
}
}
注意,我要跟蹤的別名,在我的DAO類變量
List<String> critAliases
一個實例。
如果它已經包含一個與我的opt.getAlias()字符串匹配的Subcriteria,我寧願問Criteria實例。 Criteria接口公開了一個getAlias()方法,它將爲根實體執行操作,但沒有方法檢查或列出Criteria的別名。
有沒有人有更好的解決方案?