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

使用hibernate一对多映射的not-found属性

王鹏飞
2023-03-14

http://docs.jboss.org/hibernate/orm/3.3/reference/en-美国/html/collections.html#collections-onetomany

医生说:

not-found(可选-默认为exception):指定如何处理引用丢失行的缓存标识符。忽略会将丢失的行视为空关联。

<set name="parts" cascade="all">
    <key column="productSerialNumber" not-null="true" />
    <one-to-many class="Part" not-found="ignore"/>
</set>
public static void main(String[] args) {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();
        Product prod = (Product) session.get(Product.class, 1);

        session.getTransaction().commit();
        System.out.println(prod);
        HibernateUtil.getSessionFactory().close();
    }

请帮助我理解这个属性的用途?这里的缓存标识符是什么?

共有1个答案

司空浩邈
2023-03-14

未找到与惰性加载无关。它用于处理数据库中的语无伦次。

假设您对良好的数据库实践一无所知,并且有一个order_line表,其中包含一个order_id列,该列应该引用它所属的order。假设由于您对好的实践一无所知,因此在本列中没有外键约束。

因此,删除订单是可能的,即使该订单有订单行引用它。当用Hibernate加载这样的OrderLine时,Hibernate将加载订单并以异常失败,因为它应该存在,但没有。

 类似资料:
  • 下面的映射给出的错误为 从db.karateInvoiceDetail引用db.karateInvoice的外键的列数错误。应为1 想法是有一个表,它的组合键为(id、fiscalyear和companyId),而表的组合键为(seqNo、InvoiceId、InvoiceFiscalYear和InvoiceCompanyId)。

  • 我已经尝试了表2的hibernate映射: 上面不起作用。在获取记录时,它试图从表2中获取表1中根本不存在的LOB代码

  • 您好,我有多对多映射,在联接表中有额外的列。表结构如下所示。 关系如下 链接 我创建了如下POJO类 Vendor.java 学生。爪哇 测试。爪哇 供应商est.java 供应商学生测试PK。爪哇 Hibernate映射文件,如下所示 vendor.hbm.xml vendor\u student\u测试。hbm。xml 大学生hbm。xml 测验hbm。xml 我刚开始Hibernate,这是

  • 1. 前言 本节课,咱们一起继续聊聊多对多关联映射。通过本节课程,你将了解到: 多对多关联映射的实现; 双向多对多关联映射的实现。 2. 多对多关联映射 首先了解表中的多对多关系,学生表中的数据和课程表中的数据就存在多对多关系。 一名学生可以选修多门课程,一门课程可以供多名学生选修。 数据库通过主外键的机制描述表中的数据之间的关系。对于存在多对多关系的数据表,借助于中间表,分拆成两个一对多(或者多

  • 当我映射同一个实体时,就像这里回答的那样: Hibernate与同一实体的多对多关联 在“tbl_friends”表中,我有相同含义的行。例如,我有id=1的用户和id=2的用户。在“tbl_friends”表中,当他们作为朋友链接时,我有两行 使用Hibernate或JPA引用是否可以在一行(1-2或2-1)中建立这种关系?

  • 如果在中只有一组,这将非常好地工作。ASSESSMENT_COMMENT只有两列: 它将完美地代表一对多的关系。 现在问题来了: 那么,1)这是Hibernate中已知的bug吗?2)有办法解决这个问题吗?我可以强制Hibernate创建两个映射表,每个映射表一个吗?请记住,我不能更改类来引用(业务逻辑需求)