4

我想创建一个嵌套的数据结构。

Entity1包含Entity2存储在 Map 中的类型的对象。Entity2应包含 的对象映射Entity3

第一部分,Entity1工作Entity正常。当我添加Entity3时,会发生异常。

当我执行一个简单的测试时,发生了以下异常:

java.lang.IllegalArgumentException:org.springframework.data.util.Pair 类型的目标 bean 不是持久实体(org.hameister.filmwatcher.nested.Entity2)的类型!:org.springframework.data.util.Pair

    package org.hameister.nested;

    import org.springframework.data.annotation.Id;

    import java.util.HashMap;
    import java.util.Map;

    public class Entity1 {
    @Id
    long id;

    String name1;

    Map<String, Entity2> bMap = new HashMap<>();

    public Entity1() {
    }

    public Entity1(String name1) {
        this.name1 = name1;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public  void  addElement(Entity2 entity2) {
        bMap.put(entity2.name2, entity2);
    }

 }

Entity2

package org.hameister.nested;

import org.springframework.data.annotation.Id;

import java.util.HashMap;
import java.util.Map;

public class Entity2 {
    @Id
    long id;
    String name2;

//    Map<String,Entity3> map = new HashMap<>();

    public Entity2() {
    }

    public Entity2(String name2) {
        this.name2 = name2;
    }

//    public void  addElement(Entity3 entity3) {
//       map.put(entity3.name3, entity3);
//    }

    public void setId(Long id) {
        this.id = id;
    }
}

Entity3

package org.hameister.nested;

import org.springframework.data.annotation.Id;

public class Entity3 {

    @Id
    long id;
    String name3;

    public Entity3(String name3) {
        this.name3 = name3;
    }

    public void setId(Long id) {
        this.id = id;
    }
}

当我添加另一个Entity3应该存储在Entity2地图中的类时,这不起作用。当我执行一个简单的测试时,发生了以下异常:

java.lang.IllegalArgumentException:org.springframework.data.util.Pair 类型的目标 bean 不是持久实体(org.hameister.filmwatcher.nested.Entity2)的类型!:org.springframework.data.util.Pair

要重现异常,只需删除类中的双斜杠Entity2。和测试中的双斜线NestedTest

这是测试:

package org.hameister.nested;

import org.hameister.nested.Entity1;
import org.hameister.nested.Entity2;
import org.hameister.nested.Entity3;
import org.hameister.nested.Repository1;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.data.jdbc.DataJdbcTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@DataJdbcTest
public class NestedTest {

    @Autowired
    Repository1 repository1;

    @Test
    public void testA() {

        Entity1 entity1 = new Entity1("Entity1");
        Entity2 entity2 = new Entity2("Entity2");
        Entity3 entity3 = new Entity3("Entity3");
        entity1.addElement(entity2);
     //   entity2.addElement(entity3);
        repository1.save(entity1);


    }
}

完整的源代码可以在这里找到。

4

1 回答 1

0

要从评论和问题跟踪器中收集信息:

这在当时是一个错误,但自 1.1.4 版以来已修复。

我还有人在当前版本中看到这个,请创建一张票。

于 2020-06-23T07:01:02.903 回答