@JoinColumn(name "A_IDA", referencedColumnName "IDA", nullable = false, insertable = false, updatable = false)
@MapsId("aIda")
... public class A implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Basic(optional = false) @Column(name "IDA", nullable false) private Integer ida; @Basic(optional = false) @Column(name "NAME", nullable false, length = 30) private String name; @OneToMany(cascade CascadeType.ALL, mappedBy "a") private List bList=new ArrayList(); public void addB(B bp){ bp.setA(this); bList.add(bp); } ...
... public class B implements Serializable { private static final long serialVersionUID = 1L; @EmbeddedId protected BPK bPK; @Basic(optional = false) @Column(name "NAME", nullable false, length = 30) private String name; @JoinColumn(name "A_IDA", referencedColumnName "IDA", nullable = false, insertable = false, updatable = false) @ManyToOne(optional = false) private A a; ...
A a=new A(null,"A1"); BPK bpk=new BPK(); bpk.setIdb("b1"); a.addB(new B(bpk,"B1")); EntityManager em=getEntityManager(); em.getTransaction().begin(); em.persist(a); em.getTransaction().commit();
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionIl faut d'abord ajouter l'id dans la table A avant de l'ajouter dans la table B.
CREATE TABLE parent ( idparent INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, name VARCHAR(30) NOT NULL, PRIMARY KEY(idparent) ); CREATE TABLE child ( idchild INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, parent_idparent INTEGER UNSIGNED NOT NULL, name VARCHAR(30) NOT NULL, PRIMARY KEY(idchild), FOREIGN KEY(parent_idparent) REFERENCES parent(idparent) ON DELETE NO ACTION ON UPDATE NO ACTION );