当前位置:  开发笔记 > 编程语言 > 正文

在级联持续父级之后,子级ID不存在

如何解决《在级联持续父级之后,子级ID不存在》经验,为你挑选了0个好方法。

我有一个User(父)和Home(子)实体在单向一对多关系之后相关.

我的问题是,当向a添加一个新Home的时User,新创建的和持久的Home没有id.这是正常的吗?如果我想要id,我是否需要手动保留孩子?

这些是我的实体:

@Entity
@Table(name = "user")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Long id;

    @NotNull
    @Column(name = "firstName")
    private String firstName;

    @NotNull
    @Column(name = "lastName")
    private String lastName;

    @NotNull
    @Column(name = "email")
    private String email;

    @OneToMany(targetEntity = Home.class, fetch = FetchType.EAGER, cascade = {CascadeType.ALL}, orphanRemoval = true)
    @JoinColumn(name = "userId", referencedColumnName = "id", nullable = false)
    private List homes;


    public User() {
    }

    public void addHome(Home home) {
        homes.add(home);
    }
}



@Entity
@Table(name = "home")
public class Home implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Long id;

    @NotNull
    @Column(name = "isActive")
    private Boolean isActive;


    public Home() {
    }

}

以及更新父级的代码:

Home home = HomeParser.parse(homeDTO);
User user = userService.findById(userId);
user.addHome(home);
userService.update(user); // delegate call to getEntityManager().merge(user);

在这一点上,我假设我必须home拥有它在持久化到db时刚刚给出的id,但事实并非如此.

我已经尝试过添加insertable = false到Home的id了@Column,正如这里指出的那样,但它也不起作用.

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有