我正在使用Tapestry5和Hibernate。我試圖建立一個使用從URL生成的動態限制的標準查詢。我的URL上下文被設計爲一個鍵/值對。使用URL鍵/值風格參數休眠查詢限制
例
www.mywebsite.com/make/ford/model/focus/year/2009
我解碼參數,其次
private Map<String, String> queryParameters;
private List<Vehicle> vehicles;
void onActivate(EventContext context) {
//Count is 6 - make/ford/model/focus/year/2009
int count = context.getCount();
if (count > 0) {
int i;
for (i = 0; (i + 1) < count; i += 2) {
String name = context.get(String.class, i);
String value = context.get(String.class, i + 1);
example "make"
System.out.println("name " + name);
example "ford"
System.out.println("value " + value);
this.queryParameters.put(name, value);
}
}
this.vehicles = this.session.createCriteria(Vehicle.class)
...add dynamic restrictions.
}
我希望有人能幫助我弄清楚如何限制列表中動態地添加到我的查詢。我確信這已經完成了,所以如果有人知道一個帖子,這也會有幫助。謝謝
這似乎正是我所期待的。我還有一個問題。在我的示例url中,我使用「make」作爲名稱,但實際上它不是我實體中的名稱。它實際上是「vehicleMake.name」。我想保持URL參數乾淨,只是「make」,我想知道是否應該在代碼中使用make,也許在枚舉或其他東西中引用vehicleMake.name。我不確定如何做到這一點。非常感謝你的幫助。 –
編輯的想法嘗試'vehicleName.name' ..也更正使用'crit.list()'調用 –