有從存儲過程輸出到Java數據類型映射休眠數據類型到輸出從混合類型
一個問題映射的數據類型使用一個SQLServer, 我給出的以下2個表最初的存儲過程 - 不能改變他們的定義。
CREATE TABLE [dbo].[tblDetail](
...
[dCdeType] [dbo].[Tcde] NOT NULL,
[dCdeState] [dbo].[Tvch] NOT NULL,
...
)
CREATE TABLE [dbo].[tblAP](
...
[apChState] [char](2) NOT NULL,
[apChTaxType] [char](2) NOT NULL,
...
)
我創建了第三個表 - 如果必須,我可以更改其定義。
CREATE TABLE [dbo].[tblTempAP](
...
[tpChState] [char](2) NOT NULL,
[tpChTaxType] [char](2) NOT NULL,
...
)
我有一個存儲過程 「sp_MyProcedure」,即使用Hibernate(3.1.3版)被稱爲從Java應用程序多次。
存儲過程從tblDetails中進行選擇並將記錄插入到tblTempAP中。然後它從tblAP
select <list of fiields> into #tempD from tblDetails
...some logic...
INSERT INTO [dbo].[tblTempAP]
(...
,[tpChType]
,[tpChState]
...
)
select <list of fields> from #TempD
............some logic .....
select <list of fiields> into #tempA from tblAP
...
INSERT INTO [dbo].[tblTempAP]
(...
,[tpChType]
,[tpChState]
...
)
select <list of fields> from #TempA
可以有「更新」,以及沿「一些邏輯」根據一些指標分析表tblTempAP。但是我質疑的兩個字段 - 數據類型是相同的。 「sp_MyProcedure」我們每次都從Java調用具有不同參數的循環,因此可以保證插入到tblTempAP中的數據每次都是不同的。
在存儲過程的結束時,我做
select <some fileds, including the 2 mentioned>
from tblTempAP
where <some criterias>
輸出被取入Java和處理,基於業務邏輯積累。
Java代碼
String queryString = "{ call sp_MyProcedure(?) }";
Query q;
List resultList;
try {
q = session.createSQLQuery(queryString);
q.setInteger(0, port);
resultList = q.list();
}
catch (HibernateException hex) {
throw new TaxPartnersSystemException("My Exception");
}
這是問題所在,我需要幫助! 在應用程序運行結束時,我已經填充了tblTempAP,並且在SQL Server管理工作室中查看時看起來很好。 但是,java端resultList中的數據有一個問題 - 我用調試器看到它,檢查元素 - 來的狀態只有一個字符 - 所以無論在tblTempAP中是「NY」將是「N」,「CA 「 - 將是」C「。 類型字段相同。那些單個字符是正確的。然而,像「03」這樣的東西 - 將會是「0」,「34」會出現爲「3」。
我認爲這是一個冬眠API內的映射
請幫助!問題在哪裏?如何弄清楚?請記住,我無法更改2個初始表 - 這是給定的。
我不在存儲過程中使用Cast或Convert。如果我應該,請告訴我在哪裏?從前兩個表中選擇?或者插入/更新第三個?
在此先感謝