无法使用嵌入式对象发布 JSON - 它读取并存储除对象列表 (OneToMany) 之外的所有内容 - Spring Boot API (+ hibernate)
Posted
技术标签:
【中文标题】无法使用嵌入式对象发布 JSON - 它读取并存储除对象列表 (OneToMany) 之外的所有内容 - Spring Boot API (+ hibernate)【英文标题】:Can not POST JSON with embedded objects - It reads and stores everything except the list of objects (OneToMany) - Spring Boot API (+ hibernate) 【发布时间】:2021-12-16 22:15:09 【问题描述】:所以我遇到了这个问题,当我尝试使用 Postman 将 JSON 发布到数据库时,它会完美上传,但不会上传嵌入的对象(在列表中),我正在使用 Spring Boot 和 JPA 和休眠,我正在尝试创建一个 API 来使用结构相同的 json 文件创建一个 CRUD。
在我的例子中,我有 Compania 这是主类,它有两个对象列表,一个是 default_group,另一个是 Office .
这是我的控制器(POST方法):
@PostMapping()
public void createCompania(@RequestBody Compania compania)
companiaService.addCompania(compania);
这是我的存储库中的保存方法:
public void addCompania(Compania compania)
companiaRepository.save(compania);
companiaRepository.flush();
这是我的主要 entity(Compania),它有两个 OneToMany 变量:
@Entity(name = "Compania")
@Table(
name = "compania"
)
public class Compania
@Id
@SequenceGenerator(
name = "compania_sequence",
sequenceName = "compania_sequence",
allocationSize = 1
)
@GeneratedValue (
strategy = GenerationType.SEQUENCE,
generator = "compania_sequence"
)
@Column(
nullable = false
)
private Long id;
private String name;
private String dominio;
private String altas;
private String bajas;
@OneToMany(
cascade = CascadeType.ALL,
fetch = FetchType.LAZY,
orphanRemoval = true
)
private List<DefaultGroup> default_group;
@OneToMany(
cascade = CascadeType.ALL,
fetch = FetchType.LAZY
)
private List<Office> office;
这是其他实体之一(default_group):
@Entity
@Table
public class DefaultGroup
@Id
@SequenceGenerator(
name = "defaultGroup_sequence",
sequenceName = "defaultGroup_sequence",
allocationSize = 1
)
@GeneratedValue(
strategy = GenerationType.SEQUENCE,
generator = "defaultGroup_sequence"
)
@Column(
nullable = false
)
private Long id;
private String name;
private String path;
这是我用 Postman 发送的 POST JSON:
"name": "name",
"dominio": "domain",
"altas": "xxxx",
"bajas": "yyyy",
"default_group":[
"name":"Users",
"path":"pathExample"
]
这里是 GET METHOD 和结果
"id": 3,
"name": "name",
"dominio": "domain",
"altas": "xxxx",
"bajas": "yyyy",
"default_group": [
],
"office": []
如您所见,我没有得到 default_group 数据,就像它没有正确解析它一样。你知道可能是什么问题吗?或者它可能在哪里?
谢谢!
【问题讨论】:
【参考方案1】:问题是我没有为其他实体(Default_group 和 office)添加 getter 和 setter,所以它不能t 将不同的参数设置到对象中。
【讨论】:
以上是关于无法使用嵌入式对象发布 JSON - 它读取并存储除对象列表 (OneToMany) 之外的所有内容 - Spring Boot API (+ hibernate)的主要内容,如果未能解决你的问题,请参考以下文章
android - retrofit 2 - 无法读取json数组并解析它