2017-04-15 92 views
0

我试图用Hibernate映射一个实体产品,并自引用其他产品。休眠自我参考

发送到创建项目的JSON是这样的:

{"name":"chair", "description":"red chair", 
"parent": {"name":"table","description":"red table"} 
} 

当我收到这个JSON,我需要从父属性在DB坚持儿童产品,并设置PARENT_PRODUCT_ID与产品ID。

请帮忙吗?

public class Product implements Serializable { 

private static final long serialVersionUID = 1L; 

@Id 
@Column(name = "ID") 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
private Integer productId; 

@Column(name = "NAME") 
private String name; 

@Column(name = "DESCRIPTION") 
private String description; 

@OneToMany(cascade=CascadeType.ALL) 
@JoinColumn(name="PRODUCT_ID") 
private List<Image> images; 

@OneToMany(cascade=CascadeType.ALL) 
@JoinColumn(name="PRODUCT_ID") 
private List<Product> children; 

@ManyToOne 
@JoinColumn(name = "PARENT_PRODUCT_ID") 
private Product parent; 

Image.java:

@Entity 
@Table 
public class Image implements Serializable { 

private static final long serialVersionUID = 1L; 

@Id 
@Column(name = "ID") 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
private Integer imageId; 

@Column(name = "TYPE") 
private String type; 

@ManyToOne 
@JoinColumn(name = "PRODUCT_ID", nullable = false) 
private Product product; 

回答

0

在一对多的关系,我觉得应该是这样:

@OneToMany(cascade=CascadeType.ALL, mappedBy="parent") 
private List<Product> children; 
+0

感谢,@玛丽亚。那么PARENT_PRODUCT_ID的ManyToOne字段呢? –

+0

这似乎是好的。 –