2012-04-17 8 views
3

初めて -休止状態でプロシージャを呼び出すには?私は次のように休止状態にプロシージャを呼び出すようにしようとしています

<hibernate-mapping> 
<class name="glb.chatmeter.db.SpCustsitesettings"> 
    <id name="cmcustLocId" type="int"> 
     <column name="CMCustLocID"/> 
    </id> 
    <property name="cpid" type="string"> 
     <column name="CPID"> 
     </column> 
    </property> 
</class> 
<sql-query name="select" callable="true"> 
    <return alias="select" class="glb.chatmeter.db.SpCustsitesettings"> 
     <return-property name="cmcustLocId" column="CMCustLocID" /> 
     <return-property name="cpid" column="CPID" /> 
    </return> 
    <query-param name="locationid" type="int" /> 
{call select(:locationid)} 
</sql-query> 

と私は、configファイルでこれを追加した -

 Session session = HibernateUtil.getFirstFactory().getCurrentSession(); 
     session.beginTransaction(); 
     Query q = getSession().getNamedQuery("select"); 
     q.setInteger("locationid", locId); 
     cDbInsts = (List<SpCustsitesettings>) q.list(); 

MY HBMファイルSpCustsitesettings.hbm.xmlですlike -

<mapping resource="xml/SpCustsitesettings.hbm.xml"/> 

しかし、私はexecutに行くときe例外を示すクエリ -

java.lang.StackOverflowError 
    at gnu.xml.pipeline.ValidationConsumer$ChildrenRecognizer.patchNext(ValidationConsumer.java:1570) 
    at gnu.xml.pipeline.ValidationConsumer$ChildrenRecognizer.patchNext(ValidationConsumer.java:1591) 
    at gnu.xml.pipeline.ValidationConsumer$ChildrenRecognizer.patchNext(ValidationConsumer.java:1580) 
    at gnu.xml.pipeline.ValidationConsumer$ChildrenRecognizer.patchNext(ValidationConsumer.java:1580) 
    at gnu.xml.pipeline.ValidationConsumer$ChildrenRecognizer.patchNext(ValidationConsumer.java:1591) 
............................................................................. 

プログラムがオフになります。私はいずれかが私を助けることができる、以下のいない午前問題は何

CREATE DEFINER=`root`@`%` PROCEDURE `select`(IN locationid INT) 
BEGIN 
    SELECT cmcustLocId, cpid FROM `custsitesettings` WHERE `CMCustLocID` = locationid; 
END 

- は、ここに私の手順です。

+1

にそれがどこかに無限ループに入ったように見えます。膨大な数の 'patchNext'呼び出しの後に、スタックの一番下には何がありますか? – oksayt

+0

ValidationConsumer.java、patchNext()を呼び出す場所のコードを貼り付けます。無限ループで呼び出されています。 –

+0

いいえ、ValidationConsumer.javaのようなファイルはありません。そして私のコードでは、私はループを使用していません。 ValidationConsumer.javaはコード/クラスをあらかじめ定義していると思います。 –

答えて

0

問題は、マッピングファイルSpCustsitesettings.hbm.xmlにあります。

変更

<hibernate-mapping> 
..... 

    <sql-query name="select" callable="true"> 
     <return alias="select" class="glb.chatmeter.db.SpCustsitesettings"> 
     <return-property name="cmcustLocId" column="CMCustLocID" /> 
     <return-property name="cpid" column="CPID" /> 
    </return> 
    <query-param name="locationid" type="int" /> 
    {call select(:locationid)} 
    </sql-query> 
</hibernate-mapping> 

<sql-query name="select" callable="true"> 
    <return alias="select" class="glb.chatmeter.db.SpCustsitesettings"> 
     <return-property name="cmcustLocId" column="CMCustLocID" /> 
     <return-property name="cpid" column="CPID" /> 
    </return> 
    <query-param name="locationid" type="int" /> 
    <![CDATA[CALL select(:locationid)]]> 
</sql-query> 
+0

返信ありがとうございますが、引き続き同じエラーが表示されます。 –

+0

あなたの休止状態のマッピングを確認してください。不足しています。

+0

うん。 私のコードで利用可能です。 –

関連する問題