2013-06-11 40 views
0

我需要調用java代碼中的存儲過程(entityManager僅適用於)。這個存儲過程應該在一些hbm.xml文件中定義。如何在hibernate映射文件中定義調用存儲過程,然後從java調用它(mssql服務器)

我沒有找到任何解決方案如何做到這一點。

在hibernate文檔中,我發現它應該以這種方式聲明。

<sql-query name="InsertTestCaseData" callable="true"> 
    { ? = call dbo.InsertTestCaseData(:ID) } 
</sql-query> 

此過程僅返回結果代碼(mssql server)。我應該如何在映射文件中描述它?以及如何處理如果此過程返回某些列的某些值,我應該在hbm文件中定義<return-property>

我只有entityManager對象。沒有像getNamedQuery()這樣的方法。

可以用什麼方法代替?

映射文件應該放在哪裏?它可能是單獨的文件與查詢只?

回答

0

有你here但這裏舉幾個例子是你將如何使用實體

// This stored procedure returns a result set and has one input parameter. 
@NamedStoredProcedureQuery(
    name = "ReadAddressById", 
    resultClasses = Address.class, 
    procedureName = "READ_ADDRESS", 
    parameters = { 
     @StoredProcedureParameter(mode=IN, name="P_ADDRESS_ID", type=Long.class) 
    } 
) 
@Entity 
public class Address { 
    ... 
} 
+0

不幸的是我產生的實體類調用存儲過程,我必須使用單獨的映射文件來定義查詢 –