java - 在 MySQL 集群上使用 JPA/Hibernate 检查外键约束

标签 java mysql spring hibernate jpa

我刚刚得知 MySQL 集群(使用 NDB 引擎)不支持跨集群的外键约束。

使用 JPA/Hibernate,如果数据库不强制执行参照完整性,您将如何强制执行参照完整性?

一个选项是调用数据库来验证数据,然后如果有效则执行insert/update/delete操作。我有点不愿意采用这种方法,因为它会影响性能。

问题:

  • 如果不支持外键检查,当使用 MySQL 集群和 JPA/Hibernate 时,通常如何执行参照完整性检查在数据库中。

  • 如果手动支票是唯一的选择,有没有什么方法可以通过单次访问数据库来完成手动支票交易? (可能作为 CRUD 操作的一部分)

最佳答案

我认为您无法使用任何 Hibernate/JPA 功能来强制执行参照完整性。正如 eggyal 提到的,您需要使用触发器在 MySQL 本身中创建“程序化”外键。

MySQL 网站上有一篇文章介绍如何做到这一点:http://dev.mysql.com/tech-resources/articles/mysql-enforcing-foreign-keys.html

关于java - 在 MySQL 集群上使用 JPA/Hibernate 检查外键约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10351711/

相关文章:

java - 在springboot应用程序中配置mvc异步任务执行器

java - getSupportActionBar() 空指针异常

javascript - Facebook 的数据库结构来存储评论和发布?

jquery - 即时搜索是否需要大量计算能力?

mysql - 结果包含多行

html - 保留 <form :input type ="file"> with Spring MVC 的值

java - 为什么运行时依赖的类在编译时可用?

java - 在单个 View 上显示多个表单时的表单验证

java - 带参数的QueryDSL请求,可以吗?

java - 即使使用 setAuthenticated(false) 后也能在 Spring Security 中获取主体对象