Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我想使用SpringBoot和JPA存储JSON_Spring_Spring Boot_Spring Data Jpa - Fatal编程技术网

我想使用SpringBoot和JPA存储JSON

我想使用SpringBoot和JPA存储JSON,spring,spring-boot,spring-data-jpa,Spring,Spring Boot,Spring Data Jpa,我的控制器类是 { "id" :"3", "userId": "abc", "favName": "shashank", "kpiName": "FavKPI", "rptId": "529", "language": "EN", "selectedControlIdList": [ {

我的控制器类是

     {      "id" :"3",
            "userId": "abc",
            "favName": "shashank",
            "kpiName": "FavKPI",
            "rptId": "529",
            "language": "EN",
            "selectedControlIdList": [
                {

                    "favouriteId": 3,
                    "controlId": "3",
                    "controlName": " ",
                    "label": "Plant",
                    "keyValue": "KPI_01_PL_01_1",
                    "structureType": "LISTBOX"
                },
                {

                    "favouriteId": 3,
                    "controlId": "2",
                    "controlName": " ",
                    "label": "Plant12",
                    "keyValue": "KPI_01",
                    "structureType": "LISTBOX"
                }
            ]
        }
服务等级

    @RequestMapping(value = "/addFavData", method = RequestMethod.POST, consumes =MediaType.APPLICATION_JSON_VALUE, produces =MediaType.APPLICATION_JSON_VALUE) 
        public void addFavData(@RequestBody FavouriteDTO requestInputMapper) { 
          favouriteService.addFavouriteData(requestInputMapper); 
    }
这些是实体类

     public void addFavouriteData(FavouriteDTO requestInputMapper) 
        { 
          favouriteRepository.save(requestInputMapper); 
        }
这里的id是自动生成的。并且FavoriteID与id相同。 既然id是自动生成的,而且我需要把最喜欢的id和id中的id放在一起,那么我如何将数据存储在数据库中呢
所以我给出了我的实体类。我有两个实体Favorite和DefaultFavuorite实体。因此,如何存储数据

您可以告诉Hibernate和任何其他JPA实现将您对实体执行的某些操作级联到其关联的子实体。唯一需要做的就是定义要级联到子实体的操作类型

@Entity
@Table(name = "favoriteControls", schema = "quality")
public class DefaultControlsDTO implements Serializable {


    private static final long serialVersionUID = 8720721227933753311L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @Column(name = "favouriteId")
    private Integer favouriteId;

    @Column(name = "controlId")
    private String controlId;

    @Column(name = "controlName")
    private String controlName;

    @Column(name = "label")
    private String label;

    @Column(name = "keyValue")
    private String keyValue;

    @Column(name = "structureType")
    private String structureType;

} 
下面的代码片段显示了一个示例,其中我将Author实体的persist操作级联到所有关联的Book实体

@Entity
@Table(name = "favoriteControls", schema = "quality")
public class DefaultControlsDTO implements Serializable {


    private static final long serialVersionUID = 8720721227933753311L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @Column(name = "favouriteId")
    private Integer favouriteId;

    @Column(name = "controlId")
    private String controlId;

    @Column(name = "controlName")
    private String controlName;

    @Column(name = "label")
    private String label;

    @Column(name = "keyValue")
    private String keyValue;

    @Column(name = "structureType")
    private String structureType;

} 
正如您在日志输出中所看到的,Hibernate将操作级联到关联的图书实体,并将它们持久化

EntityManager em = emf.createEntityManager();
em.getTransaction().begin();

Author a = new Author();
a.setFirstName(“John”);
a.setLastName(“Doe”);

Book b1 = new Book();
b1.setTitle(“John’s first book”);
a.getBooks().add(b1);

Book b2 = new Book();
b2.setTitle(“John’s second book”);
a.getBooks().add(b2);

em.persist(a);

em.getTransaction().commit();
em.close();

您已经做了什么?我已经创建了数据模型,然后通过save方法调用controller-->service-->Repo请共享您的codecontroller类@RequestMapping(value=“/addFavData”,method=RequestMethod.POST,consumes=MediaType.APPLICATION_JSON_VALUE,products=MediaType.APPLICATION_JSON_VALUE)public void addFavData(@RequestBody-favoritedto-requestInputMapper){favoriteService.addFavoriteData(requestInputMapper);}
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();

Author a = new Author();
a.setFirstName(“John”);
a.setLastName(“Doe”);

Book b1 = new Book();
b1.setTitle(“John’s first book”);
a.getBooks().add(b1);

Book b2 = new Book();
b2.setTitle(“John’s second book”);
a.getBooks().add(b2);

em.persist(a);

em.getTransaction().commit();
em.close();
15:44:28,140 DEBUG [org.hibernate.SQL] – insert into Author (firstName, lastName, version, id) values (?, ?, ?, ?)
15:44:28,147 DEBUG [org.hibernate.SQL] – insert into Book (publisherid, publishingDate, title, version, id) values (?, ?, ?, ?, ?)
15:44:28,150 DEBUG [org.hibernate.SQL] – insert into Book (publisherid, publishingDate, title, version, id) values (?, ?, ?, ?, ?)