Tengo dos entidades:Hibernate cascada de inserción no insertar clave externa
@Entity
public class File
.......
@Id @GeneratedValue(strategy=GenerationType.AUTO)
private int id;
@OneToMany(fetch=FetchType.LAZY, mappedBy="file", cascade=CascadeType.ALL)
private List<Tag> tags;
.......
OTHER PROPERTIES
.......
@Entity
public class Tag
.......
@Id @GeneratedValue(strategy=GenerationType.AUTO)
private int id;
@ManyToOne
@JoinColumn(name="file_id")
private File file;
@Column
private String tag;
.......
OTHER PROPERTIES
.......
Estoy tratando de insertar en archivos (y posteriormente TAG) de la siguiente manera:
File file = new File();
Tag tag = new Tag();
tag.setTag("tag1");
Tag2 tag2 = new Tag();
tag2.setTag("tag2");
List<Tag> tags = new ArrayList<Tag>();
tags.add(tag);
tags.add(tag2);
file.setTags(tags);
---Add other file attributes here---
estoy insertando luego el archivo en mi DAO usando:
sessionFactory.getCurrentSession().saveOrUpdate(file);
en mis registros que veo un inserto en mi mesa "archivo" y 2 se inserta en mi etiqueta de tabla, sin embargo, la clave externa en mi tabla de etiquetas que apunta a mi tabla de archivos (file_id) es NULL.
¿Qué podría estar haciendo mal?
Gracias, esto funcionó. Realmente, por alguna razón, pensé que Hibernate me haría la suposición de que quería que Tag fuera actualizado con mis archivos ya que tenía la relación anotada en ambos lados. –
El enlace no existe más :(puede proporcionar otra fuente? – Filipe
He cambiado la respuesta para que apunte a la versión más reciente. – jpkrohling