我正在开发一个电子商务平台。我有一个“产品”实体作为父级,而“ Pimage”实体作为子级。
两个实体都有一个CrudRepository。
以这种方式对实体建模:
VisitPlus
现在,如果我发送这样的PUT请求:
Visit(context.argument);
我在数据库中看到保存了Product实体,也保存了Pimage实体,但是PImage实体的“ productid”值为null。
如何在我的Pimage实体的“ productid”字段中保存productid?
如果我尝试使用类似的方法手动进行操作,则一切正常,并且PImage的productid字段已正确设置:
public class Product implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private BigInteger id;
// ....
//bi-directional many-to-one association to Pimage
@OneToMany(cascade = {CascadeType.ALL,CascadeType.PERSIST,CascadeType.MERGE}, mappedBy="product")
private List<Pimage> pimages = new LinkedList<Pimage>();
public List<Pimage> getPimages() {
return this.pimages;
}
public void setPimages(List<Pimage> pimages) {
this.pimages = pimages;
}
public Pimage addPimage(Pimage pimage) {
getPimages().add(pimage);
pimage.setProduct(this);
return pimage;
}
//....
public class Pimage implements Serializable {
private static final long serialVersionUID = 1L;
// ...
@ManyToOne
@JoinColumn(name="productid")
private Product product;
// ...
@RepositoryRestResource(exported=false)
public interface PimagesRepository extends PagingAndSortingRepository<Pimage, BigInteger> {
}
谢谢。
答案 0 :(得分:0)
为了帮助遇到相同问题的人,艾伦·海伊(Alan Hay)提供了一个指向我问题的可能重复项目的链接,在那里我找到了一个遇到相同问题的人,并提供了解决方案:
https://stackoverflow.com/a/46971491/1218425
在双向关联中,您需要手动设置父ID。
谢谢艾伦·海伊。
最诚挚的问候。