首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Neo4j-OGM/Spring-Data-Neo4j:将属性类型从Integer迁移到String

Neo4j-OGM/Spring-Data-Neo4j:将属性类型从Integer迁移到String
EN

Stack Overflow用户
提问于 2017-01-21 03:03:26
回答 1查看 277关注 0票数 0

在大型数据库中,我必须将节点类型的属性的数据类型从Integer更改为String (即从42更改为"42"),以便也支持非数字In。

我已经设法完成了migration本身,属性现在在数据库中具有预期的类型。我已经使用Neo4j-Browsers将查询结果显示为JSON的功能验证了这一点:

代码语言:javascript
复制
"graph": {
    "nodes": [
        {
            "id": "4190",
            "labels": [
                "MyEntity"
                ],
            "properties": {
                "id": "225"
            }
        }
    }

请注意," id“属性与节点自己的(数字)id不同。

在相应的Spring-Data-Neo4j 4app中,我也将相应属性的类型从Integer调整为String。我希望这就足够了,但是在第一次加载受影响的实体时,我现在会收到:

代码语言:javascript
复制
org.neo4j.ogm.exception.MappingException: Error mapping GraphModel to instance of com.example.MyEntity
[...]
Caused by: java.lang.RuntimeException: java.lang.IllegalArgumentException: Can not set java.lang.String field de.moneysoft.core.model.base.UriEntity.transfermarktId to java.lang.Integer
    at org.neo4j.ogm.entity.io.FieldWriter.write(FieldWriter.java:43)
    at org.neo4j.ogm.entity.io.FieldWriter.write(FieldWriter.java:68)
    at org.neo4j.ogm.context.GraphEntityMapper.writeProperty(GraphEntityMapper.java:232)
    at org.neo4j.ogm.context.GraphEntityMapper.setProperties(GraphEntityMapper.java:184)
    at org.neo4j.ogm.context.GraphEntityMapper.mapNodes(GraphEntityMapper.java:151)
    at org.neo4j.ogm.context.GraphEntityMapper.mapEntities(GraphEntityMapper.java:135)
    ... 122 common frames omitted
Caused by: java.lang.IllegalArgumentException: Can not set java.lang.String field com.example.MyEntity.id to java.lang.Integer
    at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:167)
    at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:171)
    at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:81)
    at java.lang.reflect.Field.set(Field.java:764)
    at org.neo4j.ogm.entity.io.FieldWriter.write(FieldWriter.java:41)
    ... 127 common frames omitted

我不知道Neo4j-OGM存储了任何类型的模型或数据类型(至少我在图中没有看到它)。为什么它仍然认为我的属性是一个整数?

编辑:迁移后的节点实体:

代码语言:javascript
复制
@NodeEntity
public class MyEntity
{
    @Property
    protected String name;
    @Property
    private String id;
}

我不知道任何其他相关的代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-21 18:38:45

好吧,如果你看到的错误看起来不可信,那么很可能就是这样。在睡了个好觉之后,我意识到我连接到了错误的数据库实例:不是要迁移的数据库实例,而是另一个包含未迁移状态的数据库实例。

连接到正确的实例后,一切都按预期进行!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41770683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档