OneToMany + MapKeyJoinColumn у меня не работает, подскажите, пожалуйста, что я делаю неправильно.
Я использую JPA 2.0 + Hibernate 3.6.1 И хотите отобразить следующие таблицы:
В классы:
@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();
, тогда он работает!
Кто-нибудь знает, как заставить спящий режим автоматически загружать все объекты определенного класса?