USER MAPPINGId нуля после JPA транзакции EclipseLink
@Id
@Basic(optional = false)
@SequenceGenerator(name = "sec_t_usuario", allocationSize = 1)
@GeneratedValue(generator = "sec_t_usuario", strategy = GenerationType.SEQUENCE)
@Column(name = "id")
private Integer id;
@OneToMany(mappedBy = "idUsuario", cascade = {CascadeType.ALL})
private Set<Session> sessions;
сеансу
@ManyToOne(cascade = { CascadeType.MERGE, CascadeType.REFRESH })
@JoinColumn(name = "id_usuario", referencedColumnName = "id", nullable = false)
private User user;
КОД связывающих два ПРИМИТИВОВ
@Transactional(propagation=Propagation.REQUIRES_NEW, rollbackFor=PlayTheGuruException.class)
private Session createSession(final User user) throws PlayTheGuruException
{
final Session session = new Session();
session.setActive(true);
session.setLastLogin(Calendar.getInstance());
session.setUser(user);
user.addSession(session);
entityManager.merge(user);
return session;
}
Основного метода
public Message<ResultDTO> registerUser(final Message<NewUserDataDTO> messageIn) throws PlayTheGuruException
{
.
.
.
final Session session = createSession(messageIn);
.
//here the user Id is still null
.
Имея этот контекст, почему, когда я возвращаюсь из транзакционного метода createSession, идентификатор пользователя по-прежнему является нулевым, зная, что транзакция была совершена?
У меня есть журнал запросов из ссылок eclipse и покажу мне, что пользователь вставлен и идентификатор тоже назначен, но, похоже, не был обновлен в коде.
Я попытался выполнить флеш и получить объектного пользователя от сеанса или напрямую и не работает.
Спасибо!
Можете ли вы разместить содержимое метода 'repository.saveUser()', пожалуйста? Может случиться, что экземпляр 'user' отсоединен. –
это простое «слияние» с использованием диспетчера сущностей. –