2011-04-21 40 views
0

我正在試圖休眠這個執行原生查詢時,一個奇怪的錯誤是我的查詢:Hibernate的原生查詢錯誤

String qsf = "LEFT OUTER JOIN record_v2_record_audit rra ON r.record_id = rra.record_id " 
    + "LEFT OUTER JOIN record_audit ra ON rra.record_audit_id = ra.record_audit_id AND rra.record_audit_id = ra.record_audit_id " 
    + "LEFT OUTER JOIN repeating_field rf ON r.record_id = rf.record_id " 
    + "LEFT OUTER JOIN repeating_field_field rff ON rf.repeating_field_id = rff.repeating_field_id " 
    + "LEFT OUTER JOIN field_v2 f ON rff.field_id = f.field_id AND rff.field_id = f.field_id " 
    + "LEFT OUTER JOIN field_image_v2 fi ON f.field_id = fi.field_id " 
    + "WHERE r.record_type_id = 1 " 
    + "AND r.public_access = 0 " 
    + "AND r.status = 'A' " 
    + "AND ra.process_type = 'A' " 
    + "AND rf.field_type_id = 100032011 " 
    + "AND fi.public_access = 'A'"; 

    qsc = "SELECT COUNT(DISTINCT r.record_id) FROM record_v2 r " 
        + qsf + " ;"; 

我執行查詢thuswise:

BigInteger totalRecords = (BigInteger) entityManager.createNativeQuery(
       qsc).getSingleResult(); 

但我正在此錯誤:

javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute query

,並且真的把我轟位是這樣的:

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'limit 2' at line 1

出現在堆棧跟蹤中。

該查詢從MySQl admin執行時沒有錯誤,所以我在此處不知所措。

我在Ubuntu 10.10中使用帶JDBC 5.1.15的JBoss 5。

在此先感謝您的幫助......!

回答

1

我想這個問題是由尾隨分號引起的,試圖將其刪除:

qsc = "SELECT COUNT(DISTINCT r.record_id) FROM record_v2 r " + qsf; 
+0

Arrrgh!這已經完成了。謝謝axtavt – travega 2011-04-25 20:54:32