首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如果级联类型不是全部,session.save()不起作用?

级联类型不是全部时,session.save()方法不会起作用。在Hibernate中,级联类型用于定义对象之间的关联关系,包括保存、更新、删除等操作。级联类型有多种,包括全部(ALL)、保存(SAVE)、更新(UPDATE)、删除(DELETE)等。

当级联类型不是全部(ALL)时,session.save()方法只会保存当前对象,而不会级联保存关联的对象。这意味着,如果级联类型不是全部,那么在保存对象时,关联的对象不会被自动保存到数据库中。

如果需要级联保存关联的对象,可以将级联类型设置为保存(SAVE)或全部(ALL)。保存(SAVE)级联类型表示在保存当前对象时,会级联保存关联的对象。全部(ALL)级联类型表示在保存、更新、删除当前对象时,会级联保存、更新、删除关联的对象。

以下是一个示例代码:

代码语言:txt
复制
@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    private String name;
    
    @OneToMany(cascade = CascadeType.SAVE_UPDATE)
    private List<Order> orders;
    
    // getters and setters
}

@Entity
public class Order {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    private String orderNumber;
    
    // getters and setters
}

// 在保存用户时,级联保存订单
User user = new User();
user.setName("John");

Order order1 = new Order();
order1.setOrderNumber("12345");

Order order2 = new Order();
order2.setOrderNumber("67890");

user.setOrders(Arrays.asList(order1, order2));

session.save(user);

在上述示例中,级联类型被设置为保存(SAVE_UPDATE),当保存用户对象时,关联的订单对象也会被保存到数据库中。

推荐的腾讯云相关产品:腾讯云数据库MySQL、腾讯云对象存储COS、腾讯云云服务器CVM等。具体产品介绍和链接地址请参考腾讯云官方网站。

相关搜索:将内容显示到不同类型的角色,但不是全部RxJava/RxKotlin:如果一个源完成(不是全部),则已经完成的combineLatestsqflite query()不起作用:“类型'QueryRow‘不是类型'Map<String,String>’的子类型”如果不是文件类型,则执行.vimrc自动命令iOS:如果SignIn不是UIApplicationDelete,则谷歌委派不起作用(Python)如果数据类型不是数字,则使变量等于零如果不是正确的数据类型,如何验证数据类型列和获取名称列?Django + Svelte样式不起作用,MIME类型('text/html')不是支持的样式表MIME类型如果我不指定number的类型,为什么count_ones不起作用?SparkAR - Patches.setBooleanValue("gameover",true)不起作用,因为值"true“不是BooleanSignal类型python将变量设置为null,如果没有输入,则不是特定类型,则为字符串可以为这个树类型派生一个`Ord`的实现吗?如果不是,原因何在?如果我传递的是slow.next而不是mid,为什么合并排序不起作用?如果我安装在子目录中而不是绝对url中,则Laravel asset()方法不起作用如果在羊皮纸的HeaderExample中替换UIView而不是UIImageView,则渐变背景不起作用Typescript Reflect.getMetadata(‘设计:类型’..)如果使用Angular 2堆栈,则返回Object而不是Date角度2如果我选中一个复选框而不是选中全部功能,则选中的复选框不会继续被选中原件。我的导入原型文件不起作用。为什么我得到错误"Type“不是一个类型。”?带有浮点数的CSS网格,如果设置宽度的类不是第一个,则不起作用如果通过方括号表示法和常量变量访问,则在类型保护检查后访问对象属性不起作用
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

java之hibernate之 cascade和inverse

1.Cascade是级联动作,在many_to_one中如果使用cascade可以级联操作关联对象,如下代码可以级联保存Category对象。...-- 设置多的一端的类型 --> 在保存一端数据时,如果发现关系对象多端数据没有保存,那么会级联保存...(即如果多的一端未保存,在一的一端使用级联保存时,会多出n条更新语句,效率较低;所以这种情况下,推荐在多端使用级联,而不推荐在一端使用) 如果在一端cascade="delete",那么在删除一端数据时...-- 设置多的一端的类型 --> 表示关系(外键)由Book一端来维护(即多的一端)。...注意:级联和 inverse 都是通过关联对象来完成的,如果没有设置关联对象,这两者均不起作用。在两者都设置的情况,要注意区分谁管理级联,谁管理关系。有可能一个关联对象既管理关系又管理级联

57420
  • 走进JavaWeb技术世界13:Hibernate入门经典与注解式开发

    Intellij Idea生成的Hibernate可以指定生成出主配置文件hibernate.cfg.xml,它是要放在src目录下的 如果不是自动生成的,我们可以在Hibernate的hibernate-distribution...如果是你设置了String类型,又使用了自动增长,那么就会报出下面的错误!...@Type(type="double") // 允许你去指定Hibernate里面的一些类型 private Double price; // 价格,如果没有添加注解,也会自动的生成在表中 最后我们在src...以上两个实体类编写好之后,可以很明显的看出我们不需要写它们对应的映射配置文件了,是不是很爽呢!接下来,我就要编写测试程序测试一下了。...().add(o2); // 4.保存客户,并级联保存订单 session.save(c); session.getTransaction().commit

    1.8K10

    走进JavaWeb技术世界13:Hibernate入门经典与注解式开发

    Intellij Idea生成的Hibernate可以指定生成出主配置文件hibernate.cfg.xml,它是要放在src目录下的 如果不是自动生成的,我们可以在Hibernate的hibernate-distribution...如果是你设置了String类型,又使用了自动增长,那么就会报出下面的错误!...@Type(type="double") // 允许你去指定Hibernate里面的一些类型 private Double price; // 价格,如果没有添加注解,也会自动的生成在表中 最后我们在src...以上两个实体类编写好之后,可以很明显的看出我们不需要写它们对应的映射配置文件了,是不是很爽呢!接下来,我就要编写测试程序测试一下了。...().add(o2); // 4.保存客户,并级联保存订单 session.save(c); session.getTransaction().commit

    1.8K00

    初识Hibernate之关联映射(一)

    但是,往往有些主键并不是单一的,它可能由多个字段组合,那么此时就不能使用 id标签进行指定了。...property name="address3" column="address3"> 实体类中其他的属性照常配置,对于这个Address类型的属性...(grade); session.save(stu1); 上述的这段代码完成的是一个插入操作,如果没有设置级联的话,该段程序必然报错,因为grade表中无任何数据,而student代表的一条记录的grade_id...(stu1);sesion.save(stu2); session.save(grade); 这段代码在没有配置级联的状态下,必然会报错。...关于级联,只要理解了它的本质,这些操作也都是可以理解的,本质上就是在做插入或者修改操作的时候如果发现自己代表的这条记录中有外部关联表的内容,那么则先完成对外部表的更新。

    1.3K80

    《Java从入门到放弃》框架入门篇:hibernate中的多表对应关系(二)

    前一篇讲完了一对多的关系,通过与JDBC对比应该能发现,是不是比JDBC简单了很多? 我们只需要把对象只间的包含或对应关系理清楚,完全不用我们自己来写SQL语句。...上次忘记说明,如果使用增、删、改的操作,我们还需要再引入一个Transaction对象。...如果某个业务有多次数据的操作,那么一定记得使用事务。 接下来,我们继续上次未完成的任务。...现在的添加操作就进行了级联,虽然我们只保存作者,或者只保存博客,但Session发现它内部还包含新的对象时就会级联更新。 5)inverse     表示是否由关联对象来主控级联关系。...是不是发现多了一个update?

    56450

    Hibernate 脏数据检查

    脏数据并不是废弃和无用的数据,而是状态前后发生变化的数据。...除了EntityEntry结构之外,还存在一个结构,这个结构称为EntityEntries,它也是SessionImpl的内部类,而且是一个Map类型,它以”key-value”的形式保存了所有与当前session...脏数据检查是发生在显示保存实体对象时,所谓显示保存是指在代码中明确使用session调用save,update,saveOrupdate方法对实体对象进行保存,如:session.save(user);...但是有时候由于级联操作的存在,会产生一个问题,比如当保存一个user对象时,会根据user对象的状态来对他所关联的address对象进行保存,但是此时并没有根据级联对象的显示保存语句。...比如,当向一个user对象新加入一个它所关联的address对象后,当进行session.save(user)时,Hibernate会根据unsaved-value的值判断出哪个address对象需要保存

    1.4K60

    Hibernate【映射】知识要点

    不是简单的String类型..那个就太多了!一般地,我们集合装载的都是对象,而不是简单的String,如果我们的装载在集合的数据有很多类型,那么String就不能用了!...) 对应的数据表的外键字段(dept_id) 集合中的元素类型(Employee)【通过这个类型,Hibernate就可以找到对应类型的映射文件,从而得到对应的信息!】...(dept); session.save(zs); session.save(ls); //提交事务 transaction.commit...这里写图片描述 设计实体 我们在设计实体的时候,一般是核心数据表对应一个JavaBean实体【中间表并不是核心数据表】,那么我们将会设计两个JavaBean对象 ?...session.save(oa); session.save(ds); //提交事务 transaction.commit();

    2.1K70

    hibernate笔记加强版「建议收藏」

    应该用这个课程去加入这些学生,而不是用这些学生去加入这个课程。 用这个课程去加入这些学生的特点:(少的一方去加入多的一方。推荐使用) 用这个课程时去加入全部的学生。...不是移除关系) * 2在删除班级之前。..., //由于:课程类(Course)的映射配置文件,中的set标签的cascade属性的值是“save-update”,所以在保存课程时会级联保存学生) session.save(course1); /...中的set标签的cascade属性的值是“save-update”,所以在保存学生时会级联保存课程 ) //session.save(stu1); //session.save(stu2); transaction.commit...也不是表中的字段。 运行hql语句是通过session.createQuery(“hql语句”);方式来运行的。 from Student 表示查询的是全部学生,假设以list集合返回。

    99320

    Hibernate【inverse和cascade属性】知识要点

    级联保存、更新、删除 级联保存 级联保存有什么用呢???我们来看个例子: 如果在保存对象的时候,没有把相关的对象也一并保存进数据库,会出现错误。...//维护关系 dept.getSet().add(zs); dept.getSet().add(ls); //保存dept对象 session.save...这里写图片描述 ---- 级联删除 级联删除,这个对于我们来说风险太大了,如果删除了某些数据,会把另外有关联的数据也删除…在实际中我们一般不使用!...inverse="true" > 添加一个dept对象 //添加一个dept对象 session.save(dept); 如果我们单单设置了inverse属性为true...级联保存 没有设置级联保存-->如果单单保存一个对象,而对象又存在外键时,那么就会抛出异常 设置了级联保存-->那么就可以将对象以及有关联关系的对象一并保存 级联删除 没有设置级联删除-->在删除数据的时候

    1.2K40

    MySQL外键使用详解--Java学习网

    (1)只有InnoDB类型的表才可以使用外键,mysql默认是MyISAM,这种类型不支持外键约束 (2)外键的好处:可以使得两张表关联,保证数据的一致性和实现一些级联操作; (3)外键的作用: 保持数据一致性...references outTable(id) on delete cascade on update cascade); 缺点:在对MySQL做优化的时候类似查询缓存,索引缓存之类的优化对InnoDB类型的表是不起作用的...,还有在数据库整体架构中用得同步复制也是对InnoDB类型的表不生效的,像数据库中核心的表类似商品表请大家尽量不要是使用外键,如果同步肯定要同步商品库的,加上了外键也就没法通不了,优化也对它没作用,岂不得不偿失...,做外键的目的在于保证数据完整性,请大家通过程序来实现这个目的而不是外键,切记!...以上所述就是本文的全部内容了,希望大家能够喜欢。 请您花一点时间将文章分享给您的朋友或者留下评论。我们将会由衷感谢您的支持!

    91640

    Hibernate(或其它ORM)里的inverse用法详解,内容摘自Java web轻量级开发面试教程

    如果两边都不写,那么两端都维护。这样会造成问题,即新时因为两端都控制关系,因此可能会导致重复更新。    ...注意,inverse仅仅是指定由谁来设置外键值,而不是用来设置级联操作,级联操作的方式由cascade来负责,很多人会混淆它们的含义和用法。    ...HashSet(); 14 cards.add(card1); 15 person.setCards(cards); 16 //保存人的信息 17 session.save...如果在一对多案例中,inverse只是影响效率的话,那么在多对多的例子中,inverse的设置就可能影响到数据。    ...c3); 19 //让s1这个学生选修计算机课程(也就是c2和c3课程) 20 s1.setCourses(computerCourses); 21 //保存s1 22 session.save

    69550
    领券