有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用hibernate持久化新创建的父实体和子实体?

以下是实体:

@Entity
public class Parent {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    private Long id;
    @OneToMany(fetch = FetchType.EAGER, mappedBy = "parent" ,cascade = CascadeType.ALL)
    @Fetch(value = FetchMode.SUBSELECT)
    private Collection<Child> children;
}

@Entity
public class Child {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    private Long id;

    @ManyToOne(cascade = CascadeType.ALL)
    private Parent parent;

}

为了管理这些实体,我使用spring数据(rest)。我需要保存这样的实体:

Parent parent = new Parent();
Child child = new Child()
parent.setChildren(Arrays.asList(child))
springDataRepository.save(parent);

并且只有父对象被持久化

同样,正如我所指出的,parentchild是在没有id的情况下创建的。所以我应该只持续parent,然后将其设置为child并持续child?这些操作可以通过一个parent保存操作完成吗


共 (1) 个答案

  1. # 1 楼答案

    见此回复:https://stackoverflow.com/a/7428143

    而不是:

    parent.setChildren(Arrays.asList(child))
    

    你应使用:

    parent.setChildren(new ArrayList<>(Arrays.asList(child)))