Je suis assez nouveau à JPA/Hibernate et à Java, et j'ai quelques problèmes avec les bases de l'utilisation de la classe EntityManager pour gérer les objets persistants. J'apprécierais beaucoup que quelqu'un m'explique quelque chose de très fondamental, parce que je ne peux pas le comprendre à partir de la documentation.JPA EntityManager question
JPA 2/Hibernate/Postgresql dans un environnement JSE.
* Les définitions de classe ci-dessous *
Les travaux suivants que je l'attendre à:
em.getTransaction().begin();
Car corolla = new Car();
Part clutch = new Part();
clutch.setCar(corolla);
Part bumper = new Part();
bumper.setCar(corolla);
em.persist(corolla);
em.persist(clutch);
em.persist(bumper);
em.getTransAction().commit();
Mais cela ne supprime pas les liens des pièces aux voitures dans la base de données:
tx.begin();
corolla.getParts().clear();
tx.commit();
Pourquoi est-ce le cas?
Merci d'avance, et désolé si c'est une question idiote.
Mike.
classe Voiture:
@Entity
public class Car {
private Long id;
private Set<Part> parts;
....
public Car() { parts = new HashSet<Part>(); }
@Id
@GeneratedValue(generator="increment")
@GenericGenerator(name="increment", strategy = "increment")
public Long getId() { return id; }
private void setId(Long id) { this.id = id; }
@OneToMany(mappedBy="car", cascade=CascadeType.ALL)
public Set<Part> getParts() { return this.parts; }
public void setParts(Set<Part> parts) { this.parts = parts; }
....
}
classe partie:
@Entity
public class Part {
private Long id;
private Car car;
...
public Part() {};
@Id
@GeneratedValue(generator="increment")
@GenericGenerator(name="increment", strategy = "increment")
public Long getId() { return id; }
private void setId(Long id) { this.id = id; }
@ManyToOne
@JoinColumn(name="car_id")
public Car getCar() { return this.car; }
public void setCar(Car car) { this.car = car; }
...
}
La réponse de axtavt (ci-dessous), plus le bit sur l'intégration de la relation dans la conception de l'objet dans la réponse de duffymo à ce poste http://stackoverflow.com/questions/949427/is-it-need-to-call-a-flush-jpa-interface-dans-cette-situation m'a aidé à résoudre ce problème. – mdtsandman