0
我有下一個表:休眠標準問題
Table table1
table1Id
field1
field2
field3
Table table2
table2Id
table2_field1
table2_field2
table2_field3
table1Id
在這個方法我從表1的對象有些外地
public List<table1> getMost() {
DetachedCriteria criteria = (DetachedCriteria) DetachedCriteria.forClass(table1.class);
//criteria.add(Restrictions.conjunction());
criteria.addOrder(Order.desc("field1"));
List<table1> myList = (List<table1>) findByCriteria(criteria,
false, 0, 10);//get first 10 elements by some criteria
return myList;
}
然後我需要從數據庫中獲得一些字段排序對象排序,但這些對象取決於表1中的對象
public Item getTheBest(Long table1Id) {
DetachedCriteria criteria = (DetachedCriteria) DetachedCriteria
.forClass(Item.class);
DetachedCriteria maxQuery = DetachedCriteria.forClass(Item.class);
maxQuery.add(Restrictions.eq("table1Id", table1Id)).setProjection(
Projections.max("table2_field1"));
criteria.add(Restrictions.and(
Restrictions.eq("table1Id", table1Id),
Property.forName("table2_field1").eq(maxQuery)));
List<Item> result = (List<Item>) findByCriteria(criteria, false);
if (result.iterator().hasNext())
return result.iterator().next();
else
return null;
}
我想要的是這樣的方法:
public Item getTheBest(List<Long> table1Ids)
因此,這種方法構成了上述兩種方法,並減少了計算量。 該方法的想法是有一個對象的集合,按一個標準排序,並按照這個標準排序後,我們選擇一些字段的項目。 那麼我該如何做到這一點在休眠?
@瘋狂怪胎。更確切地說,當我選擇了一些來自第一個表的數據,我想從第二個選擇數據,其中ID是相等的,並且不能有超過1個具有table1id值的代表實例 – 2012-07-10 12:58:19