不能 POST 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)
所以我遇到了这个问题,当我尝试使用 Postman post a JSON 到数据库时,它完美地上传了它,但它没有上传嵌入的对象(在列表中) ,我正在使用 Spring 通过 JPA 和休眠启动,我正在尝试创建一个 API 以使用具有相同结构的 json 文件制作 CRUD。
在我的例子中,我有 Compania,它是主要的 class,它有两个对象列表,一个是 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;
}
这里是 POST JSON 我用 Postman 发的:
{
"name": "name",
"dominio": "domain",
"altas": "xxxx",
"bajas": "yyyy",
"default_group":[
{
"name":"Users",
"path":"pathExample"
}
]
}
这是 获取方法 和结果
{
"id": 3,
"name": "name",
"dominio": "domain",
"altas": "xxxx",
"bajas": "yyyy",
"default_group": [
{}
],
"office": []
}
如您所见,我没有收到 default_group 数据,就像它没有正确解析一样。你知道可能是什么问题吗?或者它可能在哪里?
谢谢!
问题是我没有为其他实体添加 getter 和 setter(Default_group 和 office) 所以它无法将不同的参数设置到对象中。
所以我遇到了这个问题,当我尝试使用 Postman post a JSON 到数据库时,它完美地上传了它,但它没有上传嵌入的对象(在列表中) ,我正在使用 Spring 通过 JPA 和休眠启动,我正在尝试创建一个 API 以使用具有相同结构的 json 文件制作 CRUD。
在我的例子中,我有 Compania,它是主要的 class,它有两个对象列表,一个是 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;
}
这里是 POST JSON 我用 Postman 发的:
{
"name": "name",
"dominio": "domain",
"altas": "xxxx",
"bajas": "yyyy",
"default_group":[
{
"name":"Users",
"path":"pathExample"
}
]
}
这是 获取方法 和结果
{
"id": 3,
"name": "name",
"dominio": "domain",
"altas": "xxxx",
"bajas": "yyyy",
"default_group": [
{}
],
"office": []
}
如您所见,我没有收到 default_group 数据,就像它没有正确解析一样。你知道可能是什么问题吗?或者它可能在哪里?
谢谢!
问题是我没有为其他实体添加 getter 和 setter(Default_group 和 office) 所以它无法将不同的参数设置到对象中。