Ich habe eine minimale Entität mit einem Attribut Bigint-Typ erstellt, mein Problem ist, dass die Abfrage für bestimmte Werte fehlschlagen; dies ist das Schema:Abfrage mit Bigint-Attribut zurückgeben für bestimmte Werte leer
[{:db/ident :home/area,
:db/valueType :db.type/bigint,
:db/cardinality :db.cardinality/one,
:db/doc "the doc",
:db.install/_attribute :db.part/db,
:db/id #db/id[:db.part/db -1000013]}]
ich einen Abtastwert eingefügt:
(d/transact (d/connect uri2)
[{
:db/id #db/id[:db.part/user]
:home/area 123456789000000N}
])
Und bestätigt, dass es mit Hilfe der datomic Konsole erstellt wurde. Es kommt vor, dass die folgende Abfrage nicht die Entität zurückgibt vorher eingefügt, wie erwartet:
(d/q '[
:find ?e
:in $ ?h
:where
[?e :home/area ?h]]
(d/db (d/connect uri2))
123456789000000N
)
;;--- #{}
Vielleicht etwas in der Art, wie ich bin fehlt der Wert ausgedrückt wird. Ein weiterer Test einen anderen Wert wie 100N für das Attribut: home/Bereich gibt die richtige Antwort:
(d/transact (d/connect uri2)
[{
:db/id #db/id[:db.part/user]
:home/area 100N}
])
(d/q '[
:find ?e
:in $ ?h
:where
[?e :home/area ?h]]
(d/db (d/connect uri2))
100N
)
;;-- #{[17592186045451]}
auch funktioniert gut mit dem Wert 111111111111111111111111111111111111N, die ich ist verwirrend.
Datomic Version: "0.9.5390" java version "1.8.0_05" Java (TM) SE Runtime Environment (build 1.8.0_05-b13) Java HotSpot (TM) 64-Bit Server VM (build 25.5-b02, gemischter Modus) MySQL als Speicherdienst
Vielen Dank im Voraus für irgendwelche Vorschläge.
Ich habe die drei Beispiele geändert, die Ihrem Vorschlag folgen (verwenden Sie die Methode .toBigInteger) und alle funktionieren einwandfrei. Definitiv ist es mit dem Wert während der Query-Bindung verbunden. Ich werde weiter nach den Gründen suchen, aber ich kann diese Problemumgehung für mein Projekt verwenden. Danke Valentin –