Имеются две Entity, ссылающиеся друг на друга соответствующими полями отмеченными аннотациями
@Entity
Player {
@OneToOne
private User user;
}
@Entity
User{
@OneToOne
private Player player;
}
Как возможно упростить код по сохранению?
try (Session session = cfg.buildSessionFactory().openSession())
{
session.beginTransaction();
Player player = user.getPlayer();
session.save(player);
session.save(user);
player.setUser(user);
session.save(player);
session.getTransaction().commit();
session.close();
}
Уверен, что это возможно, а то хоть у меня и работает, но дюже не красиво...
После нескольких экспериментов пришло такое решение
в User чуть изменить поле player:
private Player player = new Player();
тогда при сохранении объектов, код можно сделать в две строчки:
try (Session session = cfg.buildSessionFactory().openSession())
{
session.beginTransaction();
session.save ( user );
user.getPlayer().setUser(user);
session.getTransaction().commit();
session.close();
}
Используется тот факт, что пока сессия не закрыта изменения объектов "автоматом" заносятся в базу (и это дополнительно описывать не нужно)
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости