У меня есть простой пример сопоставления JPA, включая карту. TestEntity имеет карту объектов SubEntity-Objects и некоторых ключей. Я бы ожидал, что ключи карты будут сохранены. Вместо этого они равны нулю. Вот код:Карта карты JPA2.0 не сохраняется
@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;
}
}
Это subentity:
@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.
«Вместо этого они есть». - какие? – contradictioned