Как вызвать функцию оракула, используя критерии Hibernate?

Я новичок в Hibernate. Я создаю портал входа. Мы использовали функцию БД для шифрования пароля пользователя. Кажется, что использовать спящий режим для сложных запросов/функций/процедур в существующих базах данных сложно. Можно ли писать ниже запросы, используя критерии Hibernate? SQL-запрос 1:

SELECT first_name
FROM user.emp_group
WHERE username = 'XXX'
    AND user.decrypt(password, 2) = 'YYYY';

SQL-запрос 2:

SELECT a.DESC
    ,b.total
FROM user.STATUS a
    ,(
        SELECT STATUS
            ,count(*) total
        FROM user.emp
        GROUP BY STATUS
        ) b
WHERE a.TYPE = b.STATUS (+)

User — это имя схемы, а расшифровка — это имя функции.

Я также столкнулся с проблемой получения данных из представлений, которая была решена в этом сообщении Stackoverflow. Как спящий режим извлекает данные из существующего представления базы данных? Спасибо за это. .


person Shiva    schedule 23.07.2015    source источник


Ответы (1)


Вы можете использовать собственный SQL с спящим режимом.

Способ примерно такой (например):

String sql = "SELECT first_name, salary FROM EMPLOYEE";
SQLQuery query = session.createSQLQuery(sql);
List data = query.list();

     for(Object object : data)
     {
        Map row = (Map)object;
        System.out.print("First Name: " + row.get("first_name")); 
        System.out.println(", Salary: " + row.get("salary")); 
     }
person maiklahoz    schedule 23.07.2015
comment
Я использую пример кода из tutorialspoint.com/hibernate/hibernate_native_sql.htm. - person maiklahoz; 23.07.2015
comment
Спасибо .. Я пробовал собственный sql. Оно работает. Но поскольку я использую спящий режим, я хотел использовать его API, в частности API критериев для создания приложения и, возможно, hql, если использование критериев вызывает головную боль. - person Shiva; 23.07.2015
comment
Но вы не можете вызывать конкретную функцию оракула по критериям - person maiklahoz; 23.07.2015
comment
Вы имеете в виду, что нет никакого способа вызвать функцию, используя критерии API? - person Shiva; 24.07.2015
comment
Я не уверен, но я думаю, что вы можете использовать Expression.sql() Я никогда не использовал это раньше... но я думаю, что это способ. Вы можете увидеть API здесь: docs.jboss .org/hibernate/core/3.3/api/org/hibernate/criterion/ Проблема в том, что он устарел, и вы должны использовать Restrictions.sqlRestriction(String) - person maiklahoz; 24.07.2015