我想创建一个嵌套的数据结构。
Entity1
包含类型的对象Entity2
存储在地图中。Entity2
应该包含一个对象的映射Entity3
.
第一部分,Entity1
and Entity
工作正常。当我添加Entity3
,发生异常。
当我执行一个简单的测试时,发生了以下异常:
java.lang.IllegalArgumentException:目标 bean 类型
org.springframework.data.util.Pair 不是持久化类型
实体
(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);
}
}
完整的源码可以找到here https://github.com/hameister/SpringDataJdbcExample.