2010-11-25 13 views
0

私はclj-record/transaction 2ラップ2レコード作成を使用しています。エラーが発生した場合、clojure.contrib.condition/raiseを使用して例外をスローしますが、これは何も戻されません。何か案は?cljレコードトランザクションのロールバック

+0

私は私がアプリケーションエラーではなく、参照整合性の問題に例外を上げてることに注意してください。 – edoloughlin

答えて

1

私はclojure.contrib.sql /専用セットのロールバックを使用するために必要:

(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")))))