У меня есть следующая функция Clojure, которая осуществляет операции на Datomic базе:В чем разница между указанным пользователем параметром temp-id транзакции и возвратом транзакции в Datomic?
(defn demo-tran [term description]
(d/transact conn
[{:db/id (d/tempid :db.part/utility -10034)
:utility.tag/uuid (d/squuid)
:utility.tag/term term
:utility.tag/description description}]))
Затем я запустить это в РЕПЛ:
(demo-tran "Moo" "A bovine beast")
Это преуспевает и дал мне обратно «карта сделки»:
{:db-before datomic.db.Db,
@f4c9aa60 :db-after,
datomic.db.Db @908ec69f,
:tx-data [#datom[13194139534424 50 #inst"2016-04-01T09:16:50.945-00:00" 13194139534424 true]
#datom[668503069688921 153 #uuid"56fe3c82-8dbd-4a0d-9f62-27b570cbb14c" 13194139534424 true]
#datom[668503069688921 154 "Moo" 13194139534424 true]
#datom[668503069688921 155 "A bovine beast" 13194139534424 true]],
:tempids {-9222699135738586930 668503069688921}}
Я уточнил tempid для этой операции, как «-10034», так что я бы ожидать, чтобы найти, что отрицательное число в: карте tempids. Вместо этого я нахожу -9222699135738586930. Это смущает. Что здесь происходит?
Я надеялся, что функция demo-tran вернет новый EntityID, но (кроме угадывания позиции в карте tempids), нет способа, учитывая мои входы, чтобы получить это значение.
Вы можете взглянуть на http://stackoverflow.com/a/17192764/597473. –