Spring Boot-坚持@onetomany实体

时间:2018-12-11 15:49:54

标签: hibernate spring-boot persistence one-to-many

我第一次尝试保留一对多实体。我正确地保留了“一个”部分,而不是“很多”部分。

但是,当读取数据时,一切都很好。

“一个”代码段:

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

“很多”代码段

@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 :(得分:0)

只需清理注释并更改为渴望而不是懒惰

“一个”

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

可以帮助别人