2010-11-25 2 views
0

Я использую clj-record/transaction два переноса двух созданий записей. При ошибке я использую clojure.contrib.condition/raise, чтобы исключить исключение, но это ничего не возвращает. Есть идеи?Откат транзакции clj-record

+0

Я должен отметить, что я поднимаю исключение на ошибки приложения, а не ссылочной целостности вопроса. – edoloughlin 2010-11-26 00:09:42

ответ

1

мне нужно использовать clojure.contrib.sql/Set-откат-только:

(ns my.namespace.txtest 
    (:use clojure.contrib.condition) 
    (:require clj-record.boot 
    [clj-record.callbacks.built-ins  :as cb] 
    [clj-record.core     :as rec] 
    [clj-record.validation.built-ins :as valid] 
    [clojure.contrib.sql    :as sql])) 

(def db {:classname "com.mysql.jdbc.Driver" 
    :subprotocol "mysql" 
    :user "mydb" 
    :password "password" 
    :subname "//localhost/mydb"}) 

(defn do-something 
    (rec/transaction db 
    (do-something) 
    (if (some-error-test) 
     (do 
     (sql/set-rollback-only) 
     (raise :type "some-error" :message "Oops"))))) 
Смежные вопросы