Java Spring引导存储库不会持久化一对多关系

Java Spring引导存储库不会持久化一对多关系,java,hibernate,spring-boot,spring-repositories,Java,Hibernate,Spring Boot,Spring Repositories,我有一个带有JPA和H2的Spring Boot应用程序,它有两个实体: @Entity @Table(name = "people") public class Person { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "person_id") private long id; private String name; @OneToMany(map

我有一个带有JPA和H2的Spring Boot应用程序,它有两个实体:

@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;
}

有人能帮我一下,告诉我映射和配置有什么问题吗?

这里是SpringDataREST(HATEOAS)存储库的答案。他们说,您必须向包含[父]资源的URI的关联资源发送PUT请求

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


我希望这个链接能有所帮助。

如果你需要person.getSkills().size()。。集合是否已加载?@Smajl您是否尝试过
@ElementCollection
技能
保存在数据库中?是否有指定列名的原因?@javaguy否,它们没有。如果我试图访问
person.getSkills()
,它会说集合是空的。
{ "name": "Test", "skills": [ { "name": "Skill1" }, { "name": "Skill2"} ] }
curl -i -X PUT -H "Content-Type:text/uri-list" -d "http://localhost:8080/libraries/1" http://localhost:8080/books/1/library