gpt4 book ai didi

hibernate - Spring Data Rest JPA OneToMany Null JoinColumn

转载 作者:行者123 更新时间:2023-12-01 15:43:20 25 4
gpt4 key购买 nike

非常简单的一对多关系 - 一个人对许多宠物。

@Entity
class Human{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@OneToMany(mappedBy="human", cascade={CascadeType.ALL})
private List<Pet> pets;

// other fields
}

@Entity
class Pet{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name="human_id")
private Human human;

// others fields
}

这导致创建了两个表 HUMAN(id)PET(id, human_id)

EDIT-1:我正在使用 Spring Data Rest

    <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

EDIT-2:这是关于我如何发布数据的更新 View 。我正在向人类发布:

{
// human data

"pets": [
"http://localhost/pets/1",
"http://localhost/pets/2"
]
}

问题:PET 表中的human_id为空。所有其他字段都已找到,但未建立关系。

我错过了什么?

最佳答案

通过删除 mappedBy 并将@JoinColumn 放在@OneToMany 旁边,我能够保持这种关系。

这有什么问题吗?性能问题?

@Entity
class Human{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@JoinColumn(name="human_id")
@OneToMany(cascade={CascadeType.ALL})
private List<Pet> pets;

// other fields
}

@Entity
class Pet{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@ManyToOne(cascade=CascadeType.ALL)
private Human human;

// others fields
}

关于hibernate - Spring Data Rest JPA OneToMany Null JoinColumn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41646880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com