我有2个模型/注释类,产品细节和Vnf细节。我想使用JPA HIbernate将2个表与@Oneto很多关系连接起来
产品细节模型类在下面的@Oneto许多映射中:
@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;
}
当我插入数据时,数据被插入,但VnfDetails表中的产品ID为空。
它应该是具有"ID"的外键PRODUCT_DETAILS表。
无法解决此问题。
在onetoManyClass中定义joinColumn,而不在ProductDetails中进行任何引用。
@OneToMany
@JoinColumn(name="qid")
private Set<VnfDetails> vnfd;
由于这是一个双向关系,您需要确保插入的每个实体都参考了关系的另一端,因为您将vndf级联到产品详细信息中,所以应该这样做
productDetails.setVndf(vndfList);//vndfList is having one item for example
vndfList.get(0).setProductDetails(productDetails);
productDetailsDao.save(productDetails);
在单向映射中,我也遇到过类似的问题,在外键列中插入空值,并得到了运行时异常数据避免异常。
问题通过添加nullable=false在@加入列
上得到修复
@OnetoMany
@JoinColumn(nullable=false)
并删除了子实体中的外键列定义。
我正在寻找如何删除关系的寄存器一对多/多对一。问题是当我执行EntityManager.remove()时,所有记录都被删除,我希望删除唯一的孩子(DiasTurma)而不是您的父级(Turma)。 我是这样尝试的 方法
Hy, 我为数据库创建了以下3个表: ); 我有以下存储过程 C#代码: 但在我将数据插入使用上述代码的表单后,我得到了以下错误: 无法将值NULL插入列User_Id...... PLATFORM. MDF. dbo. Buyer;列不允许空值。INSERT失败。 无法将值NULL插入列Type_Id,表... PLATFORM. MDF. dbo. User;列不允许空值。INSERT失败。
我正在尝试为一个项目创建一个双链接列表容器。我不能使用任何std容器。必须对双链接列表进行排序。以下是我目前的代码: 我遇到的问题是在我的插入函数中。我正在使用调试器,并在以下行插入代码:list.insert(10);。 它正确地进入第一种情况,即head==nullptr并创建节点。当我进入下一行代码(list.insert(20))时,它会用这一行创建一个节点:node*node=newno
问题内容: 我有一个sql列,它是可为空的,并且对表有约束 另外,由于它可以为空,所以我想设置并获取表中的空值 但我不能这样做,并且为null。如何使用JDBC将null设置为null 问题答案: 尝试使用。 接口PreparedStatement.setNull API 将java.sql.Types映射为SQL类型 PS:编辑以反映Java 8更新。
我有一个使用存储过程填充的表。这个存储过程使用从另一个数据库调用属性的视图。 举例来说,它类似于: 视图的定义如下: 并正确插入值,但如果以这种方式使用视图: 显示此消息: 正在检查身份信息:当前身份值“1252” DBCC执行已完成。如果DBCC打印了错误消息,请与系统管理员联系。 Msg 515,第16级,状态2,过程TSP,第16行 无法将值NULL插入表db2的“金额”列中。dbo。表';