HQL クエリがあるとします。
String ageQuery = "select age from people where name = :name";
Session session = getSession();
Query query = session.
createSQLQuery(nameQuery).
setParameter("name", "Thomas");
// query.list(); returns the result
しかし、テーブル名をパラメータ化したい場合はどうすればよいでしょうか? 次のように使用することはできません。
String ageQuery = "select :table from people where name = :name";
Session session = getSession();
Query query = session.
createSQLQuery(ageQuery).
setParameter("table", "age").
setParameter("name", "Thomas");
回避策を適用しました:
String ageQuery = "select :table: from people where name = :name";
Session session = getSession();
Query query = session.
createSQLQuery(ageQuery.
replace(":table:", "age")).
setParameter("name", "Thomas");
……でもあんまり好きじゃない。他の解決策はありますか?