Witam
Mam taki kod w encji Example:
@OneToMany
@MapKeyColumn(name="STRING_KEY")
public Map<String, Book> getBookMap() {
return bookMap;
}
Book jest encja.
Robie sobie testowy zapis do bazy:
Example example = new Example();
Book b1 = new Book();
b1.setAuthor("author x1");
b1.setTitle("title x1");
b1.setRandomNumber(new Long(random.nextInt(100)));
em.persist(b1);
example.getBookMap().put("book 1", b1);
Book b2 = new Book();
b2.setAuthor("author x2");
b2.setTitle("title x2");
b2.setRandomNumber(new Long(random.nextInt(100)));
em.persist(b2);
example.getBookMap().put("book 2", b2);
Book b3 = new Book();
b3.setAuthor("author x3");
b3.setTitle("title x3");
b3.setRandomNumber(new Long(random.nextInt(100)));
em.persist(b3);
example.getBookMap().put("book 3", b3);
em.persist(example);
Po wykonaniu powyzszego wszystko ladnie zapisuje sie do bazy poza jedna rzecz - kluczem dla mapy. Pomimo tego, ze w kazdym przypadku jest ustawiany jako book x to kolumna ktora powinna zawierac ten klucz jest pusta.
Kiedy sobie testowalem mapowanie Map<String, String>, Map<String, Enum> to nie bylo tego problemu ale dla Map<String, @Entity> juz cos nie dziala.
Wykorzystuje EclipseLink. Zauwazylem juz, ze np nie dziala z nim @OrderBy dla @ElementColletion.
Czy to tez jakis bug tego providera czy cos zle robie?