当前位置: 首页 > 知识库问答 >
问题:

@OneTomany双向联接列正在插入“null”值(Hibernate)

上官和韵
2023-03-14
@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;
}
@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;
}

无法解决此问题。

共有1个答案

唐泳
2023-03-14

在单向映射中,我也遇到过类似的问题,即在外键列中插入null值,并得到运行时异常、datavoilation异常。

通过在@joincolumn添加nullable=false来修复问题

@OnetoMany
@JoinColumn(nullable=false) 

并移除子实体中的外键列定义。

 类似资料:
  • 我有2个模型/注释类,产品细节和Vnf细节。我想使用JPA HIbernate将2个表与@Oneto很多关系连接起来 产品细节模型类在下面的@Oneto许多映射中: VNF详细信息如下所示,其中有@ManytoOne和JoinColumn: 当我插入数据时,数据被插入,但VnfDetails表中的产品ID为空。 它应该是具有"ID"的外键PRODUCT_DETAILS表。 无法解决此问题。

  • 我在将带有@ManyToOne关系的实体(雇员)映射到带有@OneToMany关系的实体(社区)时遇到了问题。 当我将一个实体(社区)分配给一个实体(员工),其中社区的值为空时,它工作正常。 问题出现了,如果雇员已经为社区分配了价值。当我更改该值并保存更改时,该员工为社区获得了新的值,并且这个新社区在集合中获得了该员工。唯一的问题是,老社区仍然有这个员工在收集,但它应该被删除。这只有在数据库重新启

  • 我正在寻找如何删除关系的寄存器一对多/多对一。问题是当我执行EntityManager.remove()时,所有记录都被删除,我希望删除唯一的孩子(DiasTurma)而不是您的父级(Turma)。 我是这样尝试的 方法

  • Hy, 我为数据库创建了以下3个表: ); 我有以下存储过程 C#代码: 但在我将数据插入使用上述代码的表单后,我得到了以下错误: 无法将值NULL插入列User_Id...... PLATFORM. MDF. dbo. Buyer;列不允许空值。INSERT失败。 无法将值NULL插入列Type_Id,表... PLATFORM. MDF. dbo. User;列不允许空值。INSERT失败。

  • 问题内容: 我正在为我的实习工作开发JPA兼容套件…该套件的一部分涉及测试极端情况的正确实现。 具有mapedBy属性。JPA指出: 字符串mappingBy-拥有关系的字段或属性。除非关系是单向的,否则为必需。 没有给出默认值-默认列为空。 给定双向-此示例来自JPA 2.0 JSR-317规范本身! 顾客 电话号码 尚未在of的中定义mapledBy属性!我不知道的双向映射有默认值吗? 我查看

  • 我正在尝试为一个项目创建一个双链接列表容器。我不能使用任何std容器。必须对双链接列表进行排序。以下是我目前的代码: 我遇到的问题是在我的插入函数中。我正在使用调试器,并在以下行插入代码:list.insert(10);。 它正确地进入第一种情况,即head==nullptr并创建节点。当我进入下一行代码(list.insert(20))时,它会用这一行创建一个节点:node*node=newno