2014-10-28 1 views
0

나는 datomic에 레코드를 고수 할 경우임시 ID 번호는 final : tempid 해시 맵과 어떤 관련이 있습니까?

{:db/id #db/id[:db.part/user -1226692165], :address/country "Australia"} 

내가 얻을 다시지도 : -9223350047848912453와

{:db-before #db{1000 #inst "2014-10-28T05:39:40.413-00:00"}, 
:db-after #db{1001 #inst "2014-10-28T05:39:53.626-00:00"}, 
:tx-data [#datom[13194139534313 50 #inst "2014-10-28T05:39:53.626-00:00" 13194139534313 true] 
      #datom[17592186045418 67 "Australia" 13194139534313 true]], 
:tempids {-9223350047848912453 17592186045418}} 

TEMPID

의 핵심 인 지금 ....이게 어떻게 서로 매핑되는거야?

#db/id[:db.part/user -1226692165] <=> -9223350047848912453 

답변

0

. 이 라인을 따라

뭔가 :

(defn transact! 
    [conn tx] 
    (let [{eids :tempids} @(d/transact conn tx)] 
     (map #(d/resolve-tempid (d/db conn) 
           eids 
           (:db/id %)) tx))) 

의 관계는 그렇지 않으면 주문 하나

0

그들은 그렇지 않습니다. 정의되지 않은 동작입니다.

http://docs.datomic.com/clojure/#datomic.api/tempid

: -1에서 -1000000에 N의

값은 논리합, 사용자 생성 tempids 위해 예약된다.

는 (귀하의 TEMPID이 너무 작습니다.) 당신은 resolve-tempid 기능을 사용하여 개체 ID에 임시 ID를 매핑 할 수 있습니다

+0

는 그래서 TEMPID지도가 할 수있는 경우를 갖는 지점 무엇 (첫째 등, 두 번째와 두 번째, 첫 번째와) 원래의 임시 직원으로 다시 매핑되지 않습니까? – zcaudate

+0

처음에는 임시 식별자가 유효하지 않기 때문에이 경우는 가능하지 않습니다. –

+0

사용자가 만든 tempid는 무엇을 의미합니까? 나는 그것이 내가하고있는 일이라고 생각했다. – zcaudate