Можно ли вызвать хранимую процедуру с критериями гибернации? - PullRequest
7 голосов
/ 25 марта 2010

Это моя проблема, мне нужно использовать большой SP, и в Java нет времени переписывать. Поэтому я использую критерии Hibernate и не знаю, могу ли я это назвать. Спасибо всем.

Ответы [ 3 ]

5 голосов
/ 25 марта 2010

Нет, вам нужно использовать собственный запрос. Если вы используете аннотации, см. 2.3.2. Отображение собственных запросов .

Ниже приведен пример:

@Entity
@NamedNativeQuery(
    name="baz", 
    query="call fooProc(:bar, :i)", 
    callable=true, 
    readOnly=true, 
    resultClass=Foo.class
)
public class Foo {
    private Date when;
    //...
}

И назвать это:

@Stateless
public class FooBean implements FooLocal {
    @PersistenceContext EntityManager em;

    public Foo getAFoo(string bar, int i) {
    Foo result = (Foo)em.createNamedQuery("baz").setParameter("bar", bar).setParameter("i", i).getSingleResult();
    return result;
    }

}
5 голосов
/ 25 марта 2010

См. Использование хранимых процедур для запроса в справочной документации.

Сопоставленные запросы называются так.

List employment = sess.getNamedQuery("BigSP")
    .list();

Сопоставленный запрос может возвращать сущности.

<sql-query name="BigSP" callable="true">
    <return alias="emp" class="Employment">
        <return-property name="employee" column="EMPLOYEE"/>
        <return-property name="employer" column="EMPLOYER"/>
        <return-property name="startDate" column="STARTDATE"/>
        <return-property name="endDate" column="ENDDATE"/>
        <return-property name="regionCode" column="REGIONCODE"/>
        <return-property name="id" column="EID"/>
        <return-property name="salary">
            <return-column name="VALUE"/>
            <return-column name="CURRENCY"/>
        </return-property>
    </return>
    { call BigSP }
</sql-query>
2 голосов
/ 25 марта 2010

Этот документ описывает, как отобразить результат хранимой процедуры, выполненной как собственный запрос.

Вы не можете сделать это с Criteria API, но это не должно иметь значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...