November 11, 2011

Hibernatetemplate + sql-query + return-scalar + xml

   Ситуация: необходимо в xml-файле мэппинга hibernate описать native-sql запрос, возвращающий некоторый скалярный результат.
  Например, для таблицы пользователей в postgres необходимо сформировать запрос, сообщающий, занят логин или нет. При этом для его выполнения необходимо использовать Hibernatetemplate от Spring. В этом случае в файле мэппинга описание будет иметь, например, такой вид:
<sql-query name="isLoginUsedNativeSQL">
    <return-scalar column="login_used" type="true_false" />
    <![CDATA[
        select (count(usr.id)>0) as login_used from user_ usr where usr.login=?
    ]]>
</sql-query>
    Метод слоя DAO, вызывающий этот запрос:
@Override
public Boolean isLoginUsed(String login) {
    List result = getHibernateTemplate().findByNamedQuery("isLoginUsedNativeSQL", login);
    return (Boolean) DataAccessUtils.requiredSingleResult(result);
}
    где DataAccessUtils это класс
org.springframework.dao.support.DataAccessUtils

No comments:

Post a Comment