如何在java中调用过程(使用hibernate会话)?

时间:2014-07-30 10:45:19

标签: hibernate

我需要将记录插入oracle db。我正在指定表和类名。如何调用以下程序?

    

    <id name="userId" type="string">
        <column name="USER_ID" />
    </id>
    <property name="password" type="string">
        <column name="PASSWORD" length="10" not-null="false" />
    </property>
    <property name="username" type="string">
        <column name="USERNAME" not-null="false" />
    </property>

    <property name="superUser" type="string">
        <column name="USERTYPE" length="10" not-null="false" />
    </property>

    <sql-insert callable="true" check="none">
        {Call INSERT_USERS_PK (?,?,?,?)}    
    </sql-insert>

</class>

1 个答案:

答案 0 :(得分:0)

在hibernate中使用sprocs时必须遵循一些rules

  • 必须返回结果集。我认为在您的情况下,您将返回一些虚拟结果集以使其正常工作。
  • 你不能把它作为sql-insert。你需要把它sql-query

<sql-query name="callInsertSproc"> <return alias="dummy" class="com.dummy.DummyObject"/> {? = call INSERT_USERS_PK (?,?,?,?)} </sql-query>

这就是你如何调用命名查询sproc。

Query query = session.getNamedQuery("callInsertSproc")
    .setParameter(1, <someValue>)....;
List result = query.list();