Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.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 为什么需要使用Hibernate单独保存所有OneToMany对象?_Java_Hibernate - Fatal编程技术网

Java 为什么需要使用Hibernate单独保存所有OneToMany对象?

Java 为什么需要使用Hibernate单独保存所有OneToMany对象?,java,hibernate,Java,Hibernate,考虑一个类,例如: class Person { @Column(name = "id") Integer id; @Column(name = "name") String name; @OneToMany(fetch = FetchType.EAGER, mappedBy = "owner") List <Car> cars; } class Car { @Column(name = "name") String name; @Colu

考虑一个类,例如:

class Person {
  @Column(name = "id")
  Integer id;

  @Column(name = "name")
  String name;

  @OneToMany(fetch = FetchType.EAGER, mappedBy = "owner")
  List <Car> cars;
}

class Car {
  @Column(name = "name")
  String name;

  @Column(name = "plate")
  String plate;

  @ManyToOne(fetch = FetchType.EAGER)
  @JoinColumn(name="id", nullable=false)
  Person owner;
}

难道不可能将java对象手动休眠并让它保存所有内容吗?

谢谢aviad。这正是我需要的。 作为将来的参考,下面是我使用的代码

class Person {
  @Column(name = "id")
  Integer id;

  @Column(name = "name")
  String name;

  @OneToMany(fetch = FetchType.EAGER, mappedBy = "owner", orphanRemoval=true)
  @Cascade({CascadeType.SAVE_UPDATE, CascadeType.DELETE})
  List <Car> cars;
}

class Car {
  @Column(name = "name")
  String name;

  @Column(name = "plate")
  String plate;

  @ManyToOne(fetch = FetchType.EAGER)
  @JoinColumn(name="id", nullable=false)
  Person owner;
}
但这会

Transaction tx = session.beginTransaction();   
for (Car c : person.getCars()) {
  c.setName(c.getName() + " Update test");
}
session.save(person);
tx.commit();

谢谢阿维德。这正是我需要的。 作为将来的参考,下面是我使用的代码

class Person {
  @Column(name = "id")
  Integer id;

  @Column(name = "name")
  String name;

  @OneToMany(fetch = FetchType.EAGER, mappedBy = "owner", orphanRemoval=true)
  @Cascade({CascadeType.SAVE_UPDATE, CascadeType.DELETE})
  List <Car> cars;
}

class Car {
  @Column(name = "name")
  String name;

  @Column(name = "plate")
  String plate;

  @ManyToOne(fetch = FetchType.EAGER)
  @JoinColumn(name="id", nullable=false)
  Person owner;
}
但这会

Transaction tx = session.beginTransaction();   
for (Car c : person.getCars()) {
  c.setName(c.getName() + " Update test");
}
session.save(person);
tx.commit();

是的。阅读有关卡斯卡迪内斯的文章。阅读有关cascadingFirst的信息,保存要映射到此人的车辆的从属列表,然后使用列表引用保存此人!这就像-为了在我们的表中关联外键,它应该已经作为主键存在于另一个表中-这样工作。首先保存要映射到此人的车辆的从属列表,然后使用列表引用保存此人!它类似于-为了在我们的表中关联外键,它应该已经作为主键存在于另一个表中-以这种方式工作。