无法使用嵌入式对象发布 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_groupoffice)添加 getter 和 setter,所以它不能t 将不同的参数设置到对象中。

【讨论】:

以上是关于无法使用嵌入式对象发布 JSON - 它读取并存储除对象列表 (OneToMany) 之外的所有内容 - Spring Boot API (+ hibernate)的主要内容,如果未能解决你的问题,请参考以下文章

我们如何在golang中将json文件读取为json对象

android - retrofit 2 - 无法读取json数组并解析它

无法在 React.js 中读取 json,出现意外的令牌错误

Spark 2.0.0 读取具有可变模式的 json 数据

无法在数据库 Laravel 中存储 Json 对象

DataFlow 无法读取存储在 Blob 存储中的 API 响应 json 文件