J'ai une application Boot Spring avec JPA et H2 avec deux entités:dépôt Boot Spring ne persiste pas un à-plusieurs
@Entity
@Table(name = "people")
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "person_id")
private long id;
private String name;
@OneToMany(mappedBy = "person", cascade = CascadeType.ALL)
private Set<Skill> skills = new HashSet<Skill>();
}
@Entity
@Table(name = "skills")
public class Skill {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "skill_id")
private long id;
private String name;
@ManyToOne
@JoinColumn (name="person_id")
@JsonBackReference
private Person person;
}
J'ai dépôts JPA pour l'entité personne:
@Repository
public interface PersonRepository extends CrudRepository<Person, Long> {
}
lorsque je tente d'enregistrer l'objet suivant, il retourne l'entité correcte avec des compétences inclus immédiatement, mais quand je l'appelle repository.find(<id-of-saved-entity>)
, les compétences sont vides (donc ils ne pas se persista):
{ "name": "Test", "skills": [ { "name": "Skill1" }, { "name": "Skill2"} ] }
Quelqu'un pourrait-il me aider et dites-moi ce qui ne va pas avec ma cartographie et configuration?
si vous person.getSkills() taille(). .. est la collection chargée? –
@Smajl avez-vous essayé '@ ElementCollection' –
-ce que le' skills' été sauvé dans la base de données? – developer