级联会在1笔交易中发生吗?

你拥有了它

我保存产品,该产品会级联保留productMaterial。但是,当productMaterial抛出DataIntegrityViolationException时,该产品将被回滚,这似乎是在1次事务中完成了级联,但是我找不到任何文档说这样做。有人可以帮我澄清一下吗?

注意:我使用@Transactional

Material material = new Material();
material.setId(1);

Product newProduct = new Product();
ProductMaterial productMaterial = new ProductMaterial();

newProduct.setName("bàn chải");
newProduct.setPrice(1000);
newProduct.setCreatedAt(new Date());
newProduct.setProductMaterials(Collections.singletonList(productMaterial));

productMaterial.setProduct(newProduct);
productMaterial.setMaterial(material);

productRepository.save(newProduct);

这是休眠执行:

Hibernate: 
    /* insert com.vietnam.hanghandmade.entities.Product
        */ insert 
        into
            product
            (created_at, name, price, id) 
        values
            (?, ?, ?, ?)
2020-11-10 14:55:38.281 TRACE 65729 --- [nio-8080-exec-2] o.h.type.descriptor.sql.BasicBinder      : binding parameter [1] as [TIMESTAMP] - [Tue Nov 10 14:55:38 JST 2020]
2020-11-10 14:55:38.281 TRACE 65729 --- [nio-8080-exec-2] o.h.type.descriptor.sql.BasicBinder      : binding parameter [2] as [VARCHAR] - [bàn chải]
2020-11-10 14:55:38.281 TRACE 65729 --- [nio-8080-exec-2] o.h.type.descriptor.sql.BasicBinder      : binding parameter [3] as [INTEGER] - [1000]
2020-11-10 14:55:38.281 TRACE 65729 --- [nio-8080-exec-2] o.h.type.descriptor.sql.BasicBinder      : binding parameter [4] as [OTHER] - [e5729490-a0f8-48e7-9600-eeeba8b8f279]
Hibernate: 
    /* insert com.vietnam.hanghandmade.entities.ProductMaterial
        */ insert 
        into
            product_material
            (material_id, product_id) 
        values
            (?, ?)
2020-11-10 14:55:38.324 TRACE 65729 --- [nio-8080-exec-2] o.h.type.descriptor.sql.BasicBinder      : binding parameter [1] as [INTEGER] - [1]
2020-11-10 14:55:38.324 TRACE 65729 --- [nio-8080-exec-2] o.h.type.descriptor.sql.BasicBinder      : binding parameter [2] as [OTHER] - [e5729490-a0f8-48e7-9600-eeeba8b8f279]
2020-11-10 14:55:38.328  WARN 65729 --- [nio-8080-exec-2] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 0, SQLState: 23503
2020-11-10 14:55:38.328 ERROR 65729 --- [nio-8080-exec-2] o.h.engine.jdbc.spi.SqlExceptionHelper   : ERROR: insert or update on table "product_material" violates foreign key constraint "product_material_material_id_fkey"
  Detail: Key (material_id)=(1) is not present in table "material".

劳伦兹·阿尔伯

注意:此答案错过了问题的要点,即“级联持久” –讨论了外键的“级联删除”。

级联的删除或更新是实现外键约束的系统触发器的操作的一部分,因此它与触发器语句在同一事务中运行。

我在精细手册中找不到能说明这一点的地方,但是如果您考虑一下,这是显而易见的:如果级联删除是在单独的事务中运行的,则删除成功的可能是级联删除的失败的,会导致数据库不一致,因此不是一种选择。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

级联会在1笔交易中发生吗?

来自分类Dev

装箱和拆箱会在阵列中发生吗?

来自分类Dev

在一笔交易中发送多条 jms 消息

来自分类Dev

静态初始化顺序失败会在C程序中发生吗?

来自分类Dev

YUM断笔交易

来自分类Dev

Java Regex不会在多行中发生多次

来自分类Dev

任何想法为什么会在coffeescript中发生

来自分类Dev

当两笔交易发生冲突该怎么办?

来自分类Dev

TR2会在C ++ 17中发布吗?

来自分类Dev

在Firestore数据存储区中发生冲突时,交易行为是否已更改?

来自分类Dev

Rails的关联会自动保存数据吗?

来自分类Dev

在Quickbooks中发生事件后触发API调用吗?

来自分类Dev

谁能告诉我为什么它会在LINQ中发生?

来自分类Dev

对象不会在2D项目中发生碰撞

来自分类Dev

成功下订单后会在哪个.php文件中发生“减库存”?

来自分类Dev

对象不会在2D项目中发生碰撞

来自分类Dev

我如何使某件事有20%的机会在Python中发生?

来自分类Dev

这些交易所网站的 ETH 交易会在 https://etherscan.io/txs 上列出吗?

来自分类Dev

SQL查询最后一笔交易

来自分类Dev

保留每位用户最近100笔交易,并删除其余交易

来自分类Dev

mysql在3个月内未检查任何记录,组限制为1,显示最后一笔交易

来自分类Dev

第二笔交易覆盖第一笔交易的更改

来自分类Dev

为什么即使没有错误,我的 Bool 值也会在 catch 块中发生变化?

来自分类Dev

为什么改变一个属性(Object)也会在不同且单独声明的属性中发生变化?

来自分类Dev

Xpath中发生错误

来自分类Dev

viewWillTransitionToSize中发生崩溃

来自分类Dev

Clojure中发生ClassCastExpection

来自分类Dev

Xpath中发生错误

来自分类Dev

在Java中,线程切换可以在同步块中发生吗?

Related 相关文章

  1. 1

    级联会在1笔交易中发生吗?

  2. 2

    装箱和拆箱会在阵列中发生吗?

  3. 3

    在一笔交易中发送多条 jms 消息

  4. 4

    静态初始化顺序失败会在C程序中发生吗?

  5. 5

    YUM断笔交易

  6. 6

    Java Regex不会在多行中发生多次

  7. 7

    任何想法为什么会在coffeescript中发生

  8. 8

    当两笔交易发生冲突该怎么办?

  9. 9

    TR2会在C ++ 17中发布吗?

  10. 10

    在Firestore数据存储区中发生冲突时,交易行为是否已更改?

  11. 11

    Rails的关联会自动保存数据吗?

  12. 12

    在Quickbooks中发生事件后触发API调用吗?

  13. 13

    谁能告诉我为什么它会在LINQ中发生?

  14. 14

    对象不会在2D项目中发生碰撞

  15. 15

    成功下订单后会在哪个.php文件中发生“减库存”?

  16. 16

    对象不会在2D项目中发生碰撞

  17. 17

    我如何使某件事有20%的机会在Python中发生?

  18. 18

    这些交易所网站的 ETH 交易会在 https://etherscan.io/txs 上列出吗?

  19. 19

    SQL查询最后一笔交易

  20. 20

    保留每位用户最近100笔交易,并删除其余交易

  21. 21

    mysql在3个月内未检查任何记录,组限制为1,显示最后一笔交易

  22. 22

    第二笔交易覆盖第一笔交易的更改

  23. 23

    为什么即使没有错误,我的 Bool 值也会在 catch 块中发生变化?

  24. 24

    为什么改变一个属性(Object)也会在不同且单独声明的属性中发生变化?

  25. 25

    Xpath中发生错误

  26. 26

    viewWillTransitionToSize中发生崩溃

  27. 27

    Clojure中发生ClassCastExpection

  28. 28

    Xpath中发生错误

  29. 29

    在Java中,线程切换可以在同步块中发生吗?

热门标签

归档