У меня есть три класса, одно из которых - это Пользователь, и у этого пользователя есть экземпляры других классов. Вот так:
public class User{
@OneToMany(fetch=FetchType.LAZY, cascade = CascadeType.ALL)
public List<APost> aPosts;
@OneToMany(fetch=FetchType.LAZY, cascade = CascadeType.ALL)
public List<BPost> bPosts;
}
public class BPost extends Post {
@ManyToOne(fetch=FetchType.LAZY)
public User user;
}
public class APost extends Post {
@ManyToOne(fetch=FetchType.LAZY)
public User user;
}
он работает так, но генерирует таблицы emty в db. Которые должны содержать внешние ключи. Когда я попытался использовать аннотации mappedBy и JoinColumn, я потерпел неудачу. Как я могу это решить?
Дополнительная информация:
Когда я изменил с помощью
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="id")
public User user;
и
@OneToMany(fetch=FetchType.LAZY, cascade = CascadeType.ALL, mappedBy="id")
public List<APost> aPosts;
Я получаю
Произошла ошибка JPA (невозможно построить EntityManagerFactory): повторный столбец при сопоставлении для объекта: models.post.APost column: id (должен быть сопоставлен с insert = "false" update = "false" )
Заключительное редактирование: Наконец, я ошибся в аннотации ipa.:( Когда я меняю
@OneToMany(fetch=FetchType.LAZY, cascade = CascadeType.ALL, mappedBy="id")
к
@OneToMany(fetch=FetchType.LAZY, cascade = CascadeType.ALL, mappedBy="user")
и
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="user_id")
все работает нормально.:)