2014-05-05 38 views
0

我無法從表中獲取最大ID。我們如何獲得最大ID。我的查詢如下,在標準中獲取最大標識號問題?

Criteria tot = sessionFactory.getCurrentSession().createCriteria(student.class); 
tot.add(Restrictions.eq("surveyId",send_Survey)); 
tot.add(Restrictions.eq("testId", "2")); // Instead of hard coding as 2 I need to the maximum testId 
//tot.addOrder(Order.desc("testId")); 
ScrollableResults sc=tot.scroll(); 
sc.last(); 
int rowcount=sc.getRowNumber()+1; 
System.out.println(" Here is the total count--- "+ rowcount); 

我怎樣才能使一個條件查詢中最大testId

回答

0

您的代碼看起來像是在SQL和ORM方法之間存在一些混淆。使用Criteria API,您不希望指定外鍵,而是指定實體屬性。給定一個學生類這樣

public class Student { 
     private Long id; 
     private Set<Survey> surveys; 
     private Set<Test> tests; 

     ... accessor methods etc 

    } 

您的代碼看起來會像這樣

tot.createAlias("surveys", "survey"); 
    tot.createAlias("tests", "test"); 
    tot.add(Restrictions.eq("survey.id",send_Survey)); 

並有可能子查詢這樣

DetachedCriteria subquery = DetachedCriteria.forClass(Test.class); 
    subquery.setProjection(Projections.max("id")); 

    tot.add(Subqueries.propertyIn("test.id", subquery)); 
0

用突起。

tot.setProjection(Projection.max("testId")); 
+0

我會嘗試這一點,並讓你知道。 – Vinod

+0

我試過你的建議,我得到了以下錯誤。 「方法max(string)對於類型Projection是未定義的」。 – Vinod

+0

我試過以下,但只有一行被選中不是所有的行,tot.setProjection(Projections.max(「testId」)); – Vinod