Spring Data JPA中的一对多关系

我想在两个实体(消费者和政策)之间建立一对多关系。一个消费者应该有几项政策。

这是我希望拥有的Consumer JSON对象的示例:

{

id : 1,

name : "Peter",

endpoint: "123.456.778",

policies: [

{

id : 1,

name: "policy 01"

},

{

id : 2,

name: "policy 02"

}

]

}

这是我到目前为止所拥有的:

@Entity

public class Policy {

@Id

@GeneratedValue

@Column(name = "id")

private Integer id;

@Column(name = "name")

private String name;

//getters and setters

}

@Entity

public class Consumer {

@Id

@GeneratedValue

@Column(name = "consumer_id")

private Integer id;

@Column(name = "name")

private String name;

@Column(name = "endpoint")

private String endpoint;

@OneToMany

@JoinColumn(??)

private List<Policy> policies;

//getters and setters

}

我认为这并不难,但是我现在尝试了几个小时而无法完成。我是Spring的新手,所以如果有人能够帮助我,我将非常感激!

回答:

@Entity

public class Consumer {

    @OneToMany(mappedBy = "consumer")

private List<Policy> policies;

}

@Entity

public class Policy {

@ManyToOne(fetch = FetchType.LAZY)

@JoinColumn("consumer_id")

private Consumer consumer;

}

fetch = FetchType.LAZY 不是必需的,而是可取的。

我在这里提供了一些基础知识

什么是@JoinColumn以及如何在Hibernate中使用

如果您不想Policy拥有Consumer

您可以使用联接表

@Entity

public class Consumer {

@OneToMany

private List<Policy> policies;

}

@Entity

public class Policy {

}

单向关系(Policy表将具有consumer_id列,但Policy类没有Consumer

@Entity

public class Consumer {

@OneToMany

@JoinColumn("consumer_id")

private List<Policy> policies;

}

@Entity

public class Policy {

}

另外,请记住,如果要使用a Policy作为参考(来自词典),则需要@ManyToMany

以上是 Spring Data JPA中的一对多关系 的全部内容, 来源链接: utcz.com/qa/423229.html

回到顶部