解決異常org.hibernate.exception.ConstraintViolationException: could not delete:

今天在運行jbpm一個方法
public void completeTask(){
ProcessEngine processEngine = Configuration.getProcessEngine();
TaskService taskService = processEngine.getTaskService();
taskService.completeTask("20001");

}
報錯 :org.hibernate.exception.ConstraintViolationException: could not delete: [org.jbpm.pvm.internal.model.ExecutionImpl#1].......
後來在網上查詢解決方法:連接Mysql5時,jBPM4運行到 End結點時的錯誤,把 hibernate.dialect 改爲 org.hibernate.dialect.MySQLInnoDBDialect  
我一開始用的是org.hibernate.dialect.MySQLDialect
在網上找了一個比較他兩的差異,有給出解釋的:
(參照:http://panshaobinsb.iteye.com/blog/1695746  vinesmario 回覆)
1,mysql默認存儲引擎爲InnoDB,需創建新表(表名不存在),數據庫方言只能選擇MySQLDialect;
2,mysql默認存儲引擎爲InnoDB,需更改表結構(表名存在),數據庫方言三者皆可選(建議選擇MySQLInnoDBDialect);

  InnoDB 給 MySQL 提供了具有事務(commit)、回滾(rollback)和崩潰修復能力(crash recovery capabilities)、多版本併發控制(multi-versioned concurrency control)的事務安全(transaction-safe (ACID compliant))型表。InnoDB 提供了行級鎖(locking on row level),提供與 Oracle 類似的不加鎖讀取(non-locking read in SELECTs)。InnoDB鎖定在行級並且也在SELECT語句提供一個Oracle風格一致的非鎖定讀。另外InnoDB是爲處理巨大數據量時的最 大性能設計。它的CPU效率可能是任何其它基於磁盤的關係數據庫引擎所不能匹敵的。MySQLInnoDBDialect基於上也就有InnoDB相同的 功能.
InnoDB是事務安全的.它與BDB類型具有相同的特性,它們還支持外鍵.InnoDB表格速度很快.具有比BDB還豐富的特性,因此如果需要一個事務 安全的存儲引擎,建議使用它.如果你的數據執行大量的INSERT或UPDATE,出於性能方面的考慮,應該使用InnoDB表。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章