我想使用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 (?, ?, ?, ?, ?)