Spring boot - Сохраняйте сущность @onetomany - PullRequest
0 голосов
/ 11 декабря 2018

В первый раз я пытаюсь упорствовать в сущности один ко многим.Я правильно сохранил «одну» часть, а не «многие».

Однако при чтении данных все идет хорошо.

Фрагмент «один»:

@Entity
@Table(name = "t_orderInfo")
public class OrderInfo {
    public OrderInfo() {

    }

    @Id
    @Column(name="typeName")
    private String typeName;

    @OneToMany( fetch = FetchType.LAZY, mappedBy="orderInfo")
    private Set<ReticleInfo> reticles = new HashSet<>();

    public Set<ReticleInfo> getReticles() {
        return reticles;
    }

    public void setReticles(Set<ReticleInfo> reticles) {
        this.reticles = reticles;
    }

фрагмент "many"

@Entity
@Table(name = "t_reticle")
public class ReticleInfo {
    public ReticleInfo() {}

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name="id")
    private int id;


    @ManyToOne( fetch = FetchType.LAZY) 
    @NotFound(  action = NotFoundAction.IGNORE)
    @JoinColumn(name="typeName", nullable=false, insertable=false, updatable=false)
    private OrderInfo orderInfo;

Весь материал управляется JpaRepository

В контроллере POST я делаю:

@RequestMapping(value = "/main", method = RequestMethod.POST)
    public String testPOST(@RequestBody OrderInfo orderinfo) throws JsonProcessingException {

        System.out.println("POST here");

        ObjectMapper mapper = new ObjectMapper();
        String jsonInString = mapper.writeValueAsString(orderinfo);
        System.out.println("OrderInfo CTRL GET JS: " +jsonInString);
        System.out.println("");

        System.out.println("SAVE orderinfo");       
        orderInfoService.save(orderinfo);
        System.out.println("SAVED orderinfo");

Контроллер получил строку JSONкоторый хорошо сформирован.Я проверил на стороне клиента, и «jsonInString» в контроллере также является правильным.

Я прочитал несколько сообщений об этом, я чувствую, что проблема в моем сеттере, но я не могу понять, какчтобы исправить это.

Любая помощь, чтобы сохранить мои данные будет признателен.Спасибо Алак

1 Ответ

0 голосов
/ 14 декабря 2018

Просто очистите аннотации и замените их на нетерпеливые вместо ленивых

"ОДИН"

    @OneToMany( fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy="orderInfo")
    private Set<ReticleInfo> reticles = new HashSet<>();

    public Set<ReticleInfo> getReticles() {
        return reticles;
    }

"МНОГО"

@ManyToOne
@NotFound(  action = NotFoundAction.IGNORE)
@JoinColumn(name="typeName", nullable=false, insertable=false, updatable=false)
private OrderInfo orderInfo;

    public void setReticles(Set<ReticleInfo> reticles) {
        this.reticles = reticles;
    }

Пусть это поможет кому-то еще

...