複数のドロップダウン選択ボックスがあり、ジャンルのリストを選択できます。 JavaScriptでJSON配列を作成していて、ユーザが選択したすべてのジャンルを&としてグラフをプロットするバックエンドJava関数に渡しています。Json配列をJPQLに渡す方法IN演算子のwhere節は?
Database : MySQL
はJavaScript:
var items = {};
$(function() {
$('#genres1').change(function() {
console.log($(this).val());
items.genres = $(this).val();
}).multipleSelect({
width: '56%'
});
});
var genres = items.genres.map(function(e){
return JSON.stringify(e);
});
var selectedGenres = genres.join(", ");
alert(selectedGenres); // Outputs : "Action", "Horror" and so on.... based on selection
のJava:
public static void myFun(String genre){
Logger.info("Genre"+genre); //prints "Action","Horror"
List<String> selectedGenres = Arrays.asList(genre);
//List<String> selectedGenres = Arrays.asList("Action","Horror"); //Correct output
Logger.info("Genre"+selectedGenres); //prints ["Action","Horror"]
String queryString="SELECT wD FROM sed WHERE genre IN (:genres)";
Query query1=JPA.em().createNativeQuery(queryString).setParameter("genres", selectedGenres);
}
私は、アレイは、クエリに渡す必要があるかわかりませんよ。
//List<String> selectedGenres = Arrays.asList("Action","Horror"); //Correct output
このハードコードされた値は私に正しい出力を与えます。 「selectedGenres」の配列に上記のものと全く同じものが含まれている場合 - "Action","Horror"
私は好ましい出力を得られません。私はまた、それがパラメータとして "ジャンル"を送信しようとしましたが、それは動作しませんでした。私は空の応答を得ています。誰かが私が間違っているところで私を修正することはできますか?
これを試してみます。入力していただきありがとうございます@Michael Arenzon – Venky