【问题标题】:Hibernate Self reference休眠自我参考
【发布时间】:2017-04-15 17:34:31
【问题描述】:

我正在尝试使用 Hibernate 将实体产品映射到其他产品的自我引用。

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

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

当我收到这个 json 时,我需要将子产品保存在数据库中,并使用父属性中的 productId 设置 PARENT_PRODUCT_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;

【问题讨论】:

    标签: java hibernate one-to-many many-to-one self-reference


    【解决方案1】:

    在oneToMany关系中,我认为应该是这样的:

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

    【讨论】:

    • 谢谢,@María。那么 PARENT_PRODUCT_ID 的 ManyToOne 字段呢?
    • 好像没问题。
    猜你喜欢
    • 2013-04-13
    • 2011-06-18
    • 2023-04-02
    • 2012-01-09
    • 2012-05-31
    • 2017-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多