- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
如何在hibernate中使用级联和逆向?定义它们的程序/标签是什么?它们是否相互关联?它们有什么用处?
最佳答案
如果是通过中间表的多对多关系; “级联”表示是否将在子表中创建/更新记录。而“逆”表示是否将在中间表中创建/更新记录
例如假设以下场景1 名学生可以拥有多部手机。所以学生类有一组电话的属性。1部电话也可以由多个学生拥有。所以 Phone 类具有一组学生的属性。stud_phone 表中提到了此映射。
所以有三个表,即。 Student、Phone 和 stud_phone(中介)表。映射可能如下所示:
<set name="phoneset" table="stud_phone" cascade="save-update" inverse="true">
<key column="mapping_stud_id">< /key>
<many-to-many class="com.domain.Phone" column="mapping_phon_id"/>
</set>
创建了一个新的学生对象,并将 2 个新的电话对象添加到其集合中。并且 session.save(student_obj)
被调用。根据“级联”和“反向”设置,将触发不同的查询。
以下是级联和逆向的不同组合及其影响。
1) CASCADE IS NONE 并且 INVERSE 为 false
Hibernate: insert into STUDENT (Name, stud_id) values (?, ?)
Hibernate: insert into stud_phone (mapping_stud_id, mapping_phon_id) values (?, ?)
Hibernate: insert into stud_phone (mapping_stud_id, mapping_phon_id) values (?, ?)
2) CASCADE 为 NONE,INVERSE 为真
Hibernate: insert into STUDENT (Name, stud_id) values (?, ?)
3) CASCADE 是 save-update 并且 INVERSE 是 false
Hibernate: insert into STUDENT (Name, stud_id) values (?, ?)
Hibernate: insert into phone (phone_num, phone_id) values (?, ?)
Hibernate: insert into phone (phone_num, phone_id) values (?, ?)
Hibernate: insert into stud_phone (mapping_stud_id, mapping_phon_id) values (?, ?)
Hibernate: insert into stud_phone (mapping_stud_id, mapping_phon_id) values (?, ?)
4) CASCADE 是 save-update 和 INVERSE true
Hibernate: insert into STUDENT (Name, stud_id) values (?, ?)
Hibernate: insert into phone (phone_num, phone_id) values (?, ?)
Hibernate: insert into phone (phone_num, phone_id) values (?, ?)
可以看出,只有在 CASCADE 保存更新时,PHONE 表中才会创建记录。否则不行。
当 INVERSE 为 false 时(即 Student 是关系的所有者),中间表 STUD_PHONE 被更新。当 inverse 为真时,Phone 是关系的所有者,因此即使创建了一个新学生,中间表也不会更新。
所以在两个实体的关系的情况下,“级联”影响其他实体表,“反向”影响中间表。所以它们的作用是独立的。
关于java - hibernate中的cascade和inverse有什么区别,它们是干什么用的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3667387/
我的主函数中有这两个函数。正如您将看到的,它们两者之间的唯一区别在于它们附加/编辑 html 的方式。我认为最好提出两个新函数,一个执行前半部分,另一个执行后半部分。我不确定这是否可以用 jQuery
我是编码新手,但一直在阅读有关 DRY - 不要重复自己的内容。 我有一个不适合 DRY 方法的 JavaScript if/else 语句,但我无法练习如何编写 JavaScript if/else
我的情况很简单: $("#check-in").dateDropper({ years_multiple: "10", format: "d-m-Y", minYear: "2
我想要一个方法在很多地方创建以下 json 字符串: {"daily_calendar":{"search":{"print_date":"2014-06-30"}}} 我有以下四行代码来制作散列:
我有这个正则表达式来检查字符串的格式是否为date, two or three dots ,date /\A(\d{1,2}-\d{1,2}-\d{4})...?(\d{1,2}-\d{1,2}-\d
我正在试验一些代码来创建我自己的 DOM 方法,但没有扩展实际的 DOM,类似于 jQuery 的工作方式。到目前为止,这是我的原型(prototype): function Lib( selecto
我是 Java 编程的新手。这里有人可以帮我让我的代码保持干燥吗? Button level01 = (Button) findViewById(R.id.level01); level01.setO
我正在通过一个数组来根据外部设置的状态应用不同的类。这就是我现在的做法,但我觉得我在重复自己很多次。有干燥机的方法吗?如果有帮助,类名可以是其他名称。 var children2 = Array.fr
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 4 年前。 Improve t
我正在尝试构建一个搜索页面,使用户能够找到满足特定阈值标准的模型的任何实例,并且在避免严重冗余代码方面遇到困难。我希望有更好的方法来做到这一点。这是一个稍微做作的示例,应该说明我正在尝试做什么,并在最
我是一名优秀的程序员,十分优秀!