我有 2 个模型/注释类,ProductDetails 和 VnfDetails。
我想使用 JPA HIbernate 将 2 个表与 @OnetoMany 关系连接起来
产品详情 模型类在下面,带有@OnetoMany 映射:
@Entity
@Table(name="product_details")
public class ProductDetails {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="ID")
private int id;
@Column(name="PRODUCT_ID")
private String productId;
@Column(name="PRODUCT_NAME")
private String productName;
@OneToMany(mappedBy="productDetails", cascade=CascadeType.ALL)
private Set<VnfDetails> vnfd;
public Set<VnfDetails> getVnfd() {
return vnfd;
}
public void setVnfd(Set<VnfDetails> vnfd) {
this.vnfd = vnfd;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getProductId() {
return productId;
}
public void setProductId(String productId) {
this.productId = productId;
}
public String getProductName() {
return productName;
}
public void setProductName(String productName) {
this.productName = productName;
}
Vnf详情下面是@ManytoOne 和 JoinColumn:
@Entity
@Table(name="vnf_details")
public class VnfDetails {
@Id
@Column(name="VNF_ID")
private String vnfId;
@Column(name="VNF_NAME")
private String vnfName;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="PRODUCT_ID")
private ProductDetails productDetails;
public ProductDetails getProductDetails() {
return productDetails;
}
public void setProductDetails(ProductDetails productDetails) {
this.productDetails = productDetails;
}
public String getVnfId() {
return vnfId;
}
public void setVnfId(String vnfId) {
this.vnfId = vnfId;
}
public String getVnfName() {
return vnfName;
}
public void setVnfName(String vnfName) {
this.vnfName = vnfName;
}
当我插入数据时,数据被插入但是
产品编号 在 Vnf详情表为空。
它应该是 PRODUCT_DETAILS 表的具有“ ID ”的外键。
无法解决问题。
最佳答案
在单向映射中,我遇到了类似的问题,即在外键列中插入空值并得到运行时异常数据异常。
通过在 @JoinColumn
上添加 nullable=false 解决了问题喜欢
@OnetoMany
@JoinColumn(nullable=false)
并删除了子实体中的外键列定义。
关于java - @OneToMany 双向 - 连接列插入 "null"值( hibernate ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47560527/