私はSQLにHQLクエリを変換するために、このメソッドを呼び出します。hqlをSQLに変換してフィルタを適用するには?
public String toSql(String hqlQueryText) {
if (hqlQueryText != null && hqlQueryText.trim().length() > 0) {
QueryTranslatorFactory translatorFactory = new ASTQueryTranslatorFactory();
SessionFactoryImplementor factory = (SessionFactoryImplementor) sessionFactory;
QueryTranslator translator = translatorFactory.createQueryTranslator(hqlQueryText, hqlQueryText, Collections.EMPTY_MAP, factory, null);
translator.compile(Collections.EMPTY_MAP, false);
return translator.getSQLString();
}
return null;
}
と私は、ドメインクラスの.hbm.xml
ファイルにこのフィルタを持っている:
<filter name="userAuthorize" condition="some sql query here" />
が、私はどのようにすべきかわかりませんhqlからsqlへの変換時にこのフィルタを適用するようにhibernateに指示します。
public Session getSession() {
try {
return sessionFactory.getCurrentSession();
}
catch (Exception e) {
}
return sessionFactory.openSession();
}
public List<DomainClass> getAll() {
String hql = " some hql query ";
Session session = getSession();
String sql = toSql(hql);
return session.createSQLQuery(sql).list();
}
私は簡単なhqlクエリを実行したくない、私はすぐに私の問題を簡単に説明するために書いた。 hqlをsqlに変換するときにフィルタを適用する方法はありません.QueryTranslatorの代わりにすべてのものを使用できますか? –
こんにちはRasool、あなたの質問は "Hibernate QueryTranslatorはフィルタを適用しません"というタイトルです。私はあなたに正しい答えを与えました。それは設計によるものではありません。別の質問がある場合は、それを受け入れて新しい質問を作成する必要があります。ありがとう! – Sanne
あなたの努力のおかげで、私は質問のタイトルを変更しました。この問題を解決する手助けはできますか? –