Mam dwa podmioty:Hibernate wkładka kaskada nie wkładając klucz obcy
@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
.......
próbuję wstawić do pliku (a następnie Tag) w następujący sposób:
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---
jestem następnie wkładając plik w moim DAO przy użyciu:
sessionFactory.getCurrentSession().saveOrUpdate(file);
W moich logach widzę wkładkę do mojego "pliku" tabeli i 2 wstawki do mojego tagu tabela, jednak klucz obcy w mojej tabeli znaczników, który wskazuje na moją tabelę plików (file_id) ma wartość NULL.
Co mogłem robić źle?
Dzięki, to działało. Naprawdę, z jakiegoś powodu, myślałem, że Hibernate podejmie dla mnie założenie, że chciałem, aby to Tag był aktualizowany z moimi plikami, ponieważ miałem relację opisaną po obu stronach. –
Link nie istnieje więcej :(możesz podać inne źródło? – Filipe
Zmieniłem odpowiedź, aby wskazywała na najbardziej aktualną wersję. – jpkrohling