jpa使用注解生成表时无外键问题及解决
目录
- jpa注解生成表时无外键
- 使用jpa自动建表不生成外键情况
- 情况1
- 情况2
jpa注解生成表时无外键
刚入手springboot时,在使用jpa实体注解生成表无外键。是因为jpa不知道使用何种Dialect创建,默认没有外键。
在配置文件加上
database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
就好了。
使用jpa自动建表不生成外键情况
springboot项目搭配的jpa使用时候,有一对多的关系注解,那么自动会生成外键。外键在有些时候,会导致代码不能走通,我们不想要怎么做。
@ManyToOne @JoinColumn(name="cid")
要使数据表中没有外键关联关系,注意两点。
情况1
当两边都有关联关系字段,1的这端利用@org.hibernate.annotations.ForeignKey(name = “none”),多的那端在
JoinColumn中加上foreignKey = @ForeignKey(name = “none”,value = ConstraintMode.NO_CONSTRAINT)
情况2
当只有多的那端有关联字段,一的那段没有关联字段或者关联字段被@Transient所修饰,请在多的那端在
JoinColumn中加上foreignKey = @ForeignKey(name = “none”,value = ConstraintMode.NO_CONSTRAINT)
@ManyToOne @JoinColumn(name="cid",foreignKey = @ForeignKey(name = "none",value = ConstraintMode.NO_CONSTRAINT))
最后需要说明的是@org.hibernate.annotations.ForeignKey(name = “none”)这个注解被废弃了,所以更新jar包的时候需要注意下。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
解决JPA @OneToMany及懒加载无效的问题
目录 JPA @OneToMany及懒加载无效 @OneToMany 小结一下吧 实现JPA的懒加载和无外键 例如 转换时使用 JPA @OneToMany及懒加载无效 @OneToOne @ManyToMany使用不做过多解释,重点解决"懒加载无效问题". 示例: @OneToMany teacher 和 student是一对多关系 只需要在studentList上使用@OneToMany注解,对应的参数为 懒加载.级联操作.子表外键 我为了验证懒加载是否生效,在debug模式下发现
-
Spring Data JPA 实体类中常用注解说明
目录 javax.persistence 介绍 基本注解 关联关系注解 关于关系查询的一些注意事项 javax.persistence 介绍 Spring Data JPA 采用约定大于配置的思想,默认了很多东西 JPA是存储业务实体关联的实体来源,它显示定义了如何定义一个面向普通Java对象(POJO)作为实体,以及如何与管理关系实体提供一套标准 javax.persistence位于hibernate-jpa-**.jar 包里面 jpa类层次结构: JPA类层次结构的显示单元: 单元 描述
-
SpringDataJPA在Entity中常用的注解介绍
目录 首先我们常用的注解包括 接下来介绍关联关系注解 首先我们常用的注解包括 @Entity.@Table.@Id.@IdClass.@GeneratedValue.@Basic.@Transient.@Column.@Temporal.@Enumerated.@Lob @Entity使用此注解定义的对象将会成为被JPA管理的实体,将映射到指定的数据库表@Entity(name ="user")其中name默认是此实体类的名字,全局唯一. @Table指定此实体类对应的数据库的表名.若
-
jpa使用注解生成表时无外键问题及解决
目录 jpa注解生成表时无外键 使用jpa自动建表不生成外键情况 情况1 情况2 jpa注解生成表时无外键 刚入手springboot时,在使用jpa实体注解生成表无外键.是因为jpa不知道使用何种Dialect创建,默认没有外键. 在配置文件加上 database-platform: org.hibernate.dialect.MySQL5InnoDBDialect 就好了. 使用jpa自动建表不生成外键情况 springboot项目搭配的jpa使用时候,有一对多的关系注解,那么自动会生成外键
-
MySQL多表操作的外键约束教程
目录 一.多表关系 一对一关系 一对多/多对一关系 多对多关系 二.外键约束 特点 创建外键约束 方式1-在创建表时设置外键约束 方式2-在创建表时设置外键约束 在外键约束下的操作 1.数据插入 2.删除数据 3.删除外键约束 外键约束-多对多关系 操作 一.多表关系 MySQL多表之间的关系可以概括为:一对一.一对多/多对一关系,多对多 一对一关系 一个学生只有一张身份证;一张身份证只能对应一学生.在任一表中添加唯─外键,指向另一方主键,确保一对一关系.一般一对一关系很少见,遇到一对一关系的表
-
django序列化时使用外键的真实值操作
展示: 一般情况下序列化得到的外键的内容只是id: ... { fields: { uat_date: "2015-07-25", statu: "CG", name: "慢赢优化", tester: [ 1 ], product_manager: 1, module: [ 2, 3 ], project: 1, plan_version: 1, publish_date: "2015-07-25", actual_versi
-
fastjson生成json时Null属性不显示的解决方法
举个例子 Map < String , Object > jsonMap = new HashMap< String , Object>(); jsonMap.put("a",1); jsonMap.put("b",""); jsonMap.put("c",null); jsonMap.put("d","wuzhuti.cn"); String str = JSO
-
PostgreSQL 查看表的主外键等约束关系详解
我就废话不多说了,大家还是直接看代码吧~ SELECT tc.constraint_name, tc.table_name, kcu.column_name, ccu.table_name AS foreign_table_name, ccu.column_name AS foreign_column_name, tc.is_deferrable,tc.initially_deferred FROM information_schema.table_constraints AS tc JOIN
-
探讨SQL利用INFORMATION_SCHEMA系统视图如何获取表的主外键信息
接着上篇文章<解析SQL 表结构信息查询 含主外键.自增长>里面提到了INFORMATION_SCHEMA视图,其实到了SQL 2005微软都主推大家使用INFORMATION_SCHEMA系统视图,而不是在使用sys东东了,当然目前还是有许多信息只能通过sys视图来查询.这里我们还是以查询表结果信息为例来说明一些主要的INFORMATION_SCHEMA视图的使用.首先我们需要查询列的信息,这需要用到[INFORMATION_SCHEMA].[COLUMNS]系统视图来查询数据列的信息,SQ
-
mysql下普通用户备份数据库时无lock tables权限的解决方法
[root@jb51.net]# mysqldump -u dbuser -ppass db > db.sql mysqldump: Got error: 1044: Access denied for user 'dbuser'@'localhost' to database 'db' when using LOCK TABLES 解决一: 加上-skip-lock-tables选项即可.即: [root@jb51.net]# mysqldump -u dbuser -ppass db --s
-
Mysql数据库中数据表的优化、外键与三范式用法实例分析
本文实例讲述了Mysql数据库中数据表的优化.外键与三范式用法.分享给大家供大家参考,具体如下: 数据表优化 将商品信息表进行优化 1.创建商品种类表: create table if not exists goods_cates( id int unsigned primary key auto_increment, name varchar(40) not null ); 2.将商品种类写入商品种类表中: 注意:插入另一个表的查询结果不需要加values insert into goods_
-
MySQL外键约束(FOREIGN KEY)案例讲解
MySQL 外键约束(FOREIGN KEY)是表的一个特殊字段,经常与主键约束一起使用.对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表(父表),外键所在的表就是从表(子表). 外键用来建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性.比如,一个水果摊,只有苹果.桃子.李子.西瓜等 4 种水果,那么,你来到水果摊要买水果就只能选择苹果.桃子.李子和西瓜,其它的水果都是不能购买的. 主表删除某条记录时,从表中与之对应的记录也必须有相应的改变.一个表
-
mysql增加外键约束具体方法
本教程操作环境:windows7系统.mysql8版本.Dell G3电脑. MySQL 外键约束(FOREIGN KEY)是表的一个特殊字段,经常与主键约束一起使用.对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表(父表),外键所在的表就是从表(子表). 外键用来建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性. 定义外键时,需要遵守下列规则: 主表必须已经存在于数据库中,或者是当前正在创建的表.如果是后一种情况,则主表与从表是同一个表,这样的表
随机推荐
- XML 轻松学习手册(比较不错)第1/3页
- Jquery实现自定义窗口随意的拖拽
- 基于Protobuf动态解析在Java中的应用 包含例子程序
- 找不到类型或命名空间名称“Server”(是否缺少 using 指令或程序集引用?)
- Node.js异步I/O学习笔记
- javascript时间戳和日期字符串相互转换代码(超简单)
- ASP.NET中常用输出JS脚本的类实例
- python根据出生日期返回年龄的方法
- MySQL中按时间获取慢日志信息的方法
- Python爬虫之xlml解析库(全面了解)
- 轻松掌握Java享元模式
- Java Fork/Join框架
- Android中AlarmManager基本用法分析
- Android仿一点资讯收藏Toast动画效果
- 如何在命令行下更改ip地址
- laravel异步监控定时调度器实例详解
- Java消息摘要算法MAC实现与应用完整示例
- python 用户交互输入input的4种用法详解
- 详解Spring 参数验证@Validated和@Valid的区别
- C++算法系列之日历生成的算法代码