ここに休止状態のDetachedCriteria
コードがあります。java.util.ArrayList cannot be cast to java.lang.Long
アプリケーションを実行すると、基本的に私がここで行っているのは、ホテルと税金のリストが 2 つあるということです。ここでのロジックは、ホテルと税金が指定されている場合、必要なデータをロードすることです! それらがすべてロードされていない場合!ホテルを選択せず、税金を選択したままにすると、上記のエラーが表示されます。ホテルを選択して税金を空のままにすると、期待どおりの結果が得られます。
//Use if hotel is specified
if(searchCriteria.getHotel().getId() != null){
dc.add(Restrictions.eq("h.id", searchCriteria.getHotel().getId()));
}else if(hotels != null && !hotels.isEmpty()){
Collection<Long> hotelIds = new ArrayList<Long>();
for(Hotel h : hotels){
hotelIds.add(h.getId());
}
dc.add(Restrictions.eq("h.id",hotelIds));
}
//use if tax is specified
if(searchCriteria.getTax().getId() != null){
dc.add(Restrictions.eq("t.id", searchCriteria.getTax().getId()));
}else if(tax != null && !tax.isEmpty()){
Collection<Long> taxIds = new ArrayList<Long>();
for(Tax t : tax){
taxIds.add(t.getId());
}
dc.add(Restrictions.eq("t.id",taxIds));
}
//Order Result
dc.addOrder(Order.asc("h.id"));
dc.addOrder(Order.asc("t.code"));
私がここでやっている間違いを教えてください!