2017-03-25 1 views
1

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?

+0

si vous person.getSkills() taille(). .. est la collection chargée? –

+0

@Smajl avez-vous essayé '@ ElementCollection' –

+0

-ce que le' skills' été sauvé dans la base de données? – developer

Répondre

0

Voici une réponse pour les données de printemps référentiels REST (HATEOAS). Ils disent, vous devez envoyer une demande PUT à la ressource d'association qui contient l'URI du [parent] ressource

curl -i -X PUT -H "Content-Type:text/uri-list" -d "http://localhost:8080/libraries/1" http://localhost:8080/books/1/library 

http://www.baeldung.com/spring-data-rest-relationships

J'espère que le lien aide.