JPA 2.0 Hibernate @OneToMany + @MapKeyJoinColumn

OneToMany + MapKeyJoinColumn у меня не работает, подскажите, пожалуйста, что я делаю неправильно.

Я использую JPA 2.0 + Hibernate 3.6.1 И хотите отобразить следующие таблицы:


Question to Statement to Language relationship


В классы:



@Entity
public class Question {
    // id and other fields

    @OneToMany(mappedBy="question", cascade = CascadeType.ALL)
    @MapKeyJoinColumn(name="language_id")
    private Map<Language, Statement> statements =
        new HashMap<Language, Statement>();
}

@Entity
public class Statement {
    @Id
    private Long id;

    @ManyToOne
    @JoinColumn(name = "language_id", nullable = true)
    private Language language;

    @ManyToOne
    @JoinColumn(name = "question_id", nullable = false)
    private Question question;

    @Column(name = "message")
    private String message;
}

@Entity
public class Language {
    @Id
    private Long id;

    @Column(name = "name")
    private String name;
}

Но это не работает. EntityManager сохраняет его правильно, но когда я получаю вопрос, в его карте операторов есть только одна запись с преобразованием языка в null. Пожалуйста, помогите


Edit1 : Странно, но когда я предварительно загружаю все языки, например:


String sql = "select l from Language l";
List languages = entityManager.createQuery(sql, Language.class).getResultList();

, тогда он работает!
Кто-нибудь знает, как заставить спящий режим автоматически загружать все объекты определенного класса?

6
задан jnr 22 February 2011 в 13:14
поделиться