Datomic:`:db.error/tempid-not-an-entity` tempid 仅用作事务中的值
Datomic: `:db.error/tempid-not-an-entity` tempid used only as value in transaction
当我尝试使用字符串 tempid 对 datomic-free v0.9.5656 处理该实体时,出现以下异常:
(def tx1 {:db/id "user"
:contact/full-name "John Wayne"})
(def tx2 {:db/id "other"
:some-ref "user"
(let [!rx (d/transact conn [tx2])]
(prn (:tempids @!rx))
=>
datomic.impl.Exceptions$IllegalArgumentExceptionInfo: :db.error/tempid-not-an-entity tempid used only as value in transaction
data: {#object[clojure.lang.Keyword 0x74af59e7 ":db/error"] #object[clojure.lang.Keyword 0x57972b49 ":db.error/tempid-not-an-entity"]}
java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: :db.error/tempid-not-an-entity tempid used only as value in transaction
文档显示我应该能够使用字符串作为 tempid。我是否缺少一个 reader 宏来告诉它有关分区的信息?
原来我指的是我未包含在交易中的实体的 tempid
。
我希望错误更清楚,例如"You refer to tempid 'user', but the only tempids in this tx are: #{"other"}" 然后我会立即发现错误。
获取此错误消息的另一种方法是将属性设置为空向量。大概 []
被解释为一个 tempid,并且在交易中没有找到相应的 :db/id []
。
空映射 {}
的类似推理 - 价值 {}
的交易中的温度在哪里?
当我尝试使用字符串 tempid 对 datomic-free v0.9.5656 处理该实体时,出现以下异常:
(def tx1 {:db/id "user"
:contact/full-name "John Wayne"})
(def tx2 {:db/id "other"
:some-ref "user"
(let [!rx (d/transact conn [tx2])]
(prn (:tempids @!rx))
=>
datomic.impl.Exceptions$IllegalArgumentExceptionInfo: :db.error/tempid-not-an-entity tempid used only as value in transaction
data: {#object[clojure.lang.Keyword 0x74af59e7 ":db/error"] #object[clojure.lang.Keyword 0x57972b49 ":db.error/tempid-not-an-entity"]}
java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: :db.error/tempid-not-an-entity tempid used only as value in transaction
文档显示我应该能够使用字符串作为 tempid。我是否缺少一个 reader 宏来告诉它有关分区的信息?
原来我指的是我未包含在交易中的实体的 tempid
。
我希望错误更清楚,例如"You refer to tempid 'user', but the only tempids in this tx are: #{"other"}" 然后我会立即发现错误。
获取此错误消息的另一种方法是将属性设置为空向量。大概 []
被解释为一个 tempid,并且在交易中没有找到相应的 :db/id []
。
空映射 {}
的类似推理 - 价值 {}
的交易中的温度在哪里?