2011-10-17 19 views
4

hibernateクエリ言語を使用して、mySQL DBのvarcharカラムの最大値を見つけることを試みています。HQLを使用するvarcharカラムのMAX

これは私がやろうとしていますクエリがあり、これはネイティブSQLで正常に動作します:

select max(cast(rs.marks as unsigned)) from Results rs; 

:マークはvarchar型です。

(すべての値がテキストとして保存されている)のカラムマークは、以下の行を持っている場合とします

65 
75 
82 
41 

その後、クエリが私にユニークな結果「82」を返す必要があります。 しかし、私はHQLでも同じことを書いていますが、うまくいきません。誰でも私にHibernateでこれを書く方法を教えて助けてもらえますか?

コンソールは言う:

 
java.lang.IllegalStateException: No data type for node:org.hibernate.hql.ast.tree.AggregateNode 
[AGGREGATE] AggregateNode: 'max' 
[METHOD_CALL] MethodNode: '(' 
[METHOD_NAME] IdentNode: 'cast' {originalText=cast} 
[EXPR_LIST] SqlNode: 'exprList' 
[DOT] DotNode: 'results0_.marks_' 
{propertyName=marks,dereferenceType=4,propertyPath=marks,path={synthetic-alias}.marks,tableAlias=results0_,className=com.Results,classAlias=rs} 
[IDENT] IdentNode: '{synthetic-alias}' {originalText={synthetic-alias}} 
[IDENT] IdentNode: 'marks' {originalText=marks} 
[IDENT] IdentNode: 'unsigned' {originalText=unsigned} 
+2

どのように動作しませんか? –

答えて

1

この質問に出くわし、それは非常に古いですが、答えることにしました。すべての

まずこれがMAX値

SELECT MAX(marks) max_value FROM Results; 

第二に HSQLにはUNSIGNEDキーワードがありませんを取得するには十分であろう。したがって、結果値をINTに変換する必要がある場合

SELECT CAST(MAX(marks) AS INT) max_value FROM Results; 
関連する問題