我使用neo4j 2.3版本和事务端点上的直接调用进行了一些实验
http://localhost:7474/db/data/transaction/commit
并创建具有长属性
的节点curl -X POST -H "Content-Type: application/json" -d '{
"statements" : [ {
"statement" : "MERGE (c:`foo` {id:{_queryId}}) ON CREATE SET c.`created`={created} RETURN c",
"parameters" : {
"created" : 1111111111111111111
}}]
}'
"http://localhost:7474/db/data/transaction/commit"
在客户端读取此数据时(Java,Jersey,REST客户端) 我收到long或int取决于值 看起来neo4j在返回结果时压缩数据 我用纯邮差调用证明它 - 所以这显然是neo4j服务器端问题 - 如下
{
"statements" : [ {
"statement" : "MATCH c RETURN TYPE(c.created)"
} ]
}
我得到了
"code": "Neo.DatabaseError.Statement.ExecutionFailure", "message": "java.lang.Long cannot be cast to org.neo4j.graphdb.Relationship", "stackTrace": "java.lang.ClassCastException: java.lang.Long cannot be cast to org.neo4j.graphdb.Relationship\
或
"code": "Neo.DatabaseError.Statement.ExecutionFailure", "message": "java.lang.Integer cannot be cast to org.neo4j.graphdb.Relationship", "stackTrace": "java.lang.ClassCastException: java.lang.Integer cannot be cast to org.neo4j.graphdb.Relationship
作为一个消费者,我有没有办法让我永远变长?
此致
答案 0 :(得分:0)
这实际上是由于REST客户端。为了保持一致,最好期望java.lang.Number
,然后对其进行longValue()
。
但是,您在帖子中显示的例外情况是因为您尝试在号码上使用TYPE
功能。 TYPE期望关系,并返回关系类型。