我有一个简单的 JPA 映射示例,包括一个地图。一个 TestEntity 有一个 SubEntity-Objects 和一些键的映射。我本来希望存储地图键。相反,它们是空的。这是代码:
@Entity
public class TestEntity {
@OneToMany
public Map<String, SubEntity> map = new HashMap<String, SubEntity>();
@Id
@GeneratedValue(strategy = AUTO)
protected long id;
public String name;
public TestEntity() {
}
public TestEntity(String name) {
this.name = name;
}
}
这是子实体:
@Entity
public class SubEntity {
@Id
@GeneratedValue(strategy = AUTO)
protected long id;
public SubEntity() {
}
String subEntityName;
public SubEntity(String name) {
this.subEntityName = name;
}
}
这是测试代码:
EntityManager em = EntityManagerService.getEntityManager();
em.getTransaction().begin();
for (int i = 0; i < 10; i++) {
TestEntity e = new TestEntity("MyNameIs" + i);
for (int j = 0; j < 8; j++) {
SubEntity se = new SubEntity("IamNo" + j + "." + i);
e.map.put("Key" + i * 100 + j, se);
em.persist(se);
}
em.persist(e);
}
em.getTransaction().commit();
所有对象都被创建和存储。只是映射表中的键值都是空的。我的错误在哪里?我将 JPA2 与 eclipselink2.4.1 和 Derby 10 一起使用。