2011-11-22 46 views
0

我有一個表[Name Table]和關聯表workSchedule。我使用Hibernate 3.6.7.Final來生成我的查詢。其結果是:爲什麼我在SQL Server 2005 Management Studio中的更新查詢不能用作Java中的Prepared Query?

update Personnel.dbo.[Name Table] set workSchedule=? where [Name IRC]=? 

哪拋出異常:

11-22 @ 10:30:41 WARN [] JDBCExceptionReporter - SQL錯誤:8624,SQLSTATE:S0001
11-22 @ 10: 30:41錯誤[] JDBCExceptionReporter - 內部查詢處理器錯誤:查詢處理器無法生成查詢計劃。有關更多信息,請聯繫客戶支持服務。

[Name Table].workSchedule是一個外鍵這樣定義:

ALTER TABLE [Name Table] ADD workSchedule VARCHAR(34) 
      FOREIGN KEY REFERENCES workSchedule(id); 

workSchedule.id這樣定義:

CREATE TABLE workSchedule 
(/* format = letter-days-lunch EX: A-5-1 */ 
    id AS CASE lunch 
     WHEN 1 THEN scheduleLetter+'-'+CONVERT(VARCHAR, scheduleDays)+'-'+'1' 
     ELSE scheduleLetter+'-'+CONVERT(VARCHAR, scheduleDays)+'-'+'5' 
     END PERSISTED NOT NULL, 
/* rest of table follows */ 
); 

如果我複製粘貼直接對上述更新查詢到SSMS和插值?它的工作。

UPDATE:
我只是想改變出表WorkSchedule的一個INT IDENTITY列的主鍵。我離開時重命名爲id以換班,否則將它留在桌面上作爲列。我也更新了POJO和.hbm.xml文件。更新查詢仍然失敗,具有相同的例外情況。

回答

0

我列出這是一個答案,因爲這是我最終做的解決我的問題。

我完全刪除了WorkSchedule上的計算字段。
我在POJO中實現了作爲吸氣劑的calcualations。
Re-taled workschedule改爲使用IDENTITY代替PK
並將[Name Table]重新鏈接到新的IDENTITY字段。現在一切正常。

相關問題