2017-12-15 24 views
0

名前付きクエリを作成して、年単位でデータを取得しています。名前付きクエリのパラメータとして列名を送信する方法

クエリ

SELECT * FROM table1 
    WHERE ((year1 > 0) OR (year2> 0 OR (beyondYear2> 0))); 

クエリが正常に動作しています。 JSPから私は年を選択しますので、その特定の年にはレコードが読み込まれます。上記のクエリは、すべての年の範囲のデータを読み込みます。毎年クエリを書くのを避けるためにパラメータとしてColumn Nameを渡すことができる方法はありますか?

SELECT * FROM table1 
WHERE (:yearRange > 0); 

:yearRange:パラメータとして。

答えて

1

あなたは、スイッチなどのパラメータを使用することができます。

SELECT * FROM table1 
    WHERE ((year1 > 0 AND :yearRange='year1') OR (year2> 0 AND :yearRange='year2' OR (beyondYear2> 0 AND :yearRange='beyondYear2'))); 
+0

私はJavaからそれを送ってはどうすればよいですか? setString()またはsetParameter()を使用する必要がありますか?と私はこの部分を理解していない ':yearRange = 'year1'' – Sam

+0

setParameter、その通常のクエリパラメータ – Turo

+0

いいえ、それは動作しません。 '重大:無効な列 名前 org.hibernate.exception.GenericJDBCException:実行できませんでした クエリ' – Sam

関連する問題