我第一次尝试保留一对多实体。我正确地保留了“一个”部分,而不是“很多”部分。
但是,当读取数据时,一切都很好。
“一个”代码段:
@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”也正确。
我读了一些有关此事的帖子,我觉得问题出在我的二传手中,但我不知道该如何解决。
任何帮助我保持数据的人将不胜感激。谢谢 阿拉克
答案 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;
}
可以帮助别人