Я хочу отобразить промежуточную таблицу, которая выглядит следующим образом:
Так выглядит мой класс пользователя:
@Entity
@Table(name = "users")
public class User
@Id
@Column(name = "user_id")
private int id;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinTable(name="FAVORITES",
joinColumns = @JoinColumn(name = "fk_user_id",
referencedColumnName = "user_id"),
inverseJoinColumns = @JoinColumn(name = "fk_content_id",
referencedColumnName = "content_id"))
private Set<Content> favorites;
И вот как выглядит мой класс контента:
@Entity
@Table(name = "content")
public class Content
@Id
@Column(name="content_id")
private int id;
Объекты сохраняются правильно, но не в таблице избранного, вместо этого сохраняются только идентификаторы 0.
Где я создаю объекты:
public void registerUser(User tempUser) {
Session session = this.SessionFactory.getCurrentSession();
session.beginTransaction();
Content con = new Content();
Set<Content> favs = new HashSet<Content>();
favs.add(con);
tempUser.setFavorites(favs);
session.save(tempUser);
session.getTransaction().commit();
session.close();
}
И журнал:
Hibernate: select content_.content_id from contents content_ where content_.content_id=?
Hibernate: insert into users (user_id) values (?)
Hibernate: insert into contents (content_id) values (?)
Hibernate: insert into FAVORITES (fk_user_id, fk_content_id) values (?, ?)
Изображение того, что сохраняется в БД: