Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA事务提交Eclipselink后的Id null_Java_Jpa_Eclipselink_Entitymanager - Fatal编程技术网

Java JPA事务提交Eclipselink后的Id null

Java JPA事务提交Eclipselink后的Id null,java,jpa,eclipselink,entitymanager,Java,Jpa,Eclipselink,Entitymanager,用户映射 @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 = "idUsuar

用户映射

@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;
链接两个实体的代码

 @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
    .
public Message registerUser(final Message messageIn)抛出播放gurue异常
{
.
.
.
最终会话=createSession(messageIn);
.
//这里的用户Id仍然为空
.
有了这个上下文,为什么当我从createSession事务方法返回时,知道事务已经提交,用户id仍然为null

我有来自eclipse链接的查询日志,并向我显示用户已插入,id也已分配,但代码中似乎尚未刷新

我已经尝试过刷新并从会话或直接获取对象用户,但不起作用


谢谢!

entityManager.merge()(请参阅)方法返回一个托管实例。在我看来,作为参数发送的
用户
实例没有被附加。换句话说,它不是您所说的“out”参数,因此您不会在该对象中设置ID。您需要使用返回的对象才能找到生成的ID


会话
实例肯定没有被管理。而且其引用的
用户
也不是被管理的实例。

你能发布
存储库的内容吗。saveUser()
方法?可能会出现
用户
实例被分离的情况。这是一个使用实体管理器的简单“合并”。好的。我会尝试你的方法并告诉你消息。谢谢!它工作得很好。我不会再忘记这个概念XD谢谢!
public Message<ResultDTO> registerUser(final Message<NewUserDataDTO> messageIn) throws PlayTheGuruException
{
    .
    .
    .
    final Session session = createSession(messageIn);
    .
    //here the user Id is still null
    .