Neo4j蓝图index.remove()不会提交

时间:2013-10-15 15:37:55

标签: clojure neo4j tinkerpop

我正在尝试创建自己的tinkerpop.blueprints库的Clojure绑定,并且遇到了似乎是提交失败的问题。目前我正在使用Neo4j作为图形实现。以下是不起作用的特定功能:

(defn remove-from-index!
  ([index-name elm key]
    (remove-from-index!
      index-name elm key (property elm key)))
  ([index-name elm key val]
    (let [idx (index index-name)]
      (tx
        (-> idx
          (.remove (name key) val elm)))
      idx)))

这样使用:

(remove-from-index! :users v1 :username)
(remove-from-index! :users v2 :username "foo")

它似乎工作正常,但当我查询索引时,我试图删除的顶点不会被删除。我试图一点一点地分解它并确定它实际上删除了,但是一旦.commit被调用它就会把所有东西都推回去。

涉及的其他功能/宏:

(defn property
  [elm key]
  (-> elm (.getProperty (name key))))

(defmacro tx
  [& body]
  `(try
    (let [val# (do ~@body)]
      (.commit *g*)
      val#)
    (catch Exception e#
      (println (.getMessage e#))
      (.rollback *g*))))

(defn index
  ([^String nomen]
    (index (name nomen) "Vertex"))
  ([^String nomen ^String type]
    (-> *g*
      (.getIndex
        (name nomen)
        (Class/forName (str "com.tinkerpop.blueprints." type))))))

0 个答案:

没有答案