我想为以下实体建立一对多关系。(membership_plan可以有多个membership_plan_features)。我用的是Sping Boot 3.0.6。
@Entity
@Table(name = "membership_plan")
public class MembershipPlan {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long planId;
@Column(name = "org_id")
private String orgId;
@Column(name = "plan_name")
private String planName;
@Column(name = "plan_price")
private String planPrice;
@OneToMany (mappedBy = "membershipPlan")
private List<MembershipPlanFeature> planFeature;
}
第二实体
@Entity
@Table(name = "membership_plan_feature")
@Getter
@Setter
public class MembershipPlanFeature {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "org_id")
private String orgId;
@Column(name = "feature_name")
private String featureName;
@Column(name = "feature_desc")
private String featureDesc;
@ManyToOne
@JoinColumn(name="plan_id")
private MembershipPlan membershipPlan;
}
以下是飞行路线查询:
CREATE TABLE membership_plan (
plan_id INT NOT NULL,
org_id VARCHAR(255) NULL,
plan_name VARCHAR(255) NULL,
plan_price VARCHAR(255) NULL,
PRIMARY KEY (plan_id)
);
CREATE TABLE membership_plan_feature (
id INT AUTO_INCREMENT NOT NULL,
org_id VARCHAR(255) NULL,
plan_id INT NOT NULL,
feature_name VARCHAR(255) NULL,
feature_desc VARCHAR(255) NULL,
PRIMARY KEY (id)
);
ALTER table membership_plan_feature
ADD CONSTRAINT fk_membership_plan_feature
FOREIGN KEY (plan_id)
REFERENCES membership_plan (plan_id);
现在,当我查询membershipPlanRepository.findAll();
时,它返回一个递归数据:
[
{
"planId": 1,
"orgId": "101",
"planName": "GOLD",
"planPrice": "29",
"planFeature": [
{
"id": 1,
"orgId": "101",
"featureName": "Kanban",
"featureDesc": "Kanban",
"membershipPlan": {
"planId": 1,
"orgId": "101",
"planName": "GOLD",
"planPrice": "29",
"planFeature": [
{
"id": 1,
"orgId": "101",
"featureName": "Kanban",
"featureDesc": "Kanban",
"membershipPlan": {
"planId": 1,
"orgId": "101",
"planName": "GOLD",
"planPrice": "29",
"planFeature": [... and so on
以下是例外:
Resolved [org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: Infinite recursion (StackOverflowError)]
请让我知道我哪里做错了。
1条答案
按热度按时间djp7away1#
您必须告诉Jackson跳过为实体生成嵌套字段: