я хочу сохранить JSON, используя весеннюю загрузку с JPA - PullRequest
0 голосов
/ 12 ноября 2018
     {      "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); 
        }

А это класс сущности !!

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


    private static final long serialVersionUID = -7089417397407966229L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    @Column(name = "userId")
    private String userId;
    @Column(name = "favName")
    private String favName;
    @Column(name = "kpiName")
    private String kpiName;
    @Column(name = "rptId")
    private String rptId;
    @Column(name = "language")
    private String language;

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @JoinColumn(name = "favouriteId")
    private List<DefaultControlsDTO> selectedControlIdList;
}

И

@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;

} 

здесь идентификатор генерируется автоматически. и favouriteId совпадает с id. Итак, как я могу сохранить данные, так как идентификатор генерируется автоматически, и мне нужно поставить тот же любимый идентификатор, как в идентификаторе. так как я могу хранить данные в базе данных поэтому я дал свой класс сущности. у меня есть две сущности Favorite и DefaultFavuorite Entity.so как я могу сохранить данные

1 Ответ

0 голосов
/ 12 ноября 2018

Вы можете указать Hibernate и любой другой реализации JPA каскадировать определенные операции, которые вы выполняете над сущностью, к связанным с ней дочерним сущностям. Единственное, что вам нужно сделать, - это определить тип операции, которую вы хотите каскадировать с дочерними объектами.

В следующем фрагменте кода показан пример, в котором я каскадно сохраняю операцию сохранения объекта Author для всех связанных объектов Book.

    @Entity
    public class Author {

        …

        @ManyToMany(mappedBy=”authors”, cascade = CascadeType.PERSIST)
        private List<Book> books = new ArrayList<Book>();

        …
    }

Когда вы сейчас создаете нового Автора и несколько связанных сущностей Книги, вам просто нужно сохранить сущность Автора.

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();

Как вы можете видеть в выходных данных журнала, Hibernate каскадно связывает операцию со связанными сущностями Book и также сохраняет их.

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 (?, ?, ?, ?, ?)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...