我想创建一个嵌套的数据结构。
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);
}
}
完整的源代码可以在这里找到。