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

当引用的talbe没有主键时,如何禁用ManyToMany表的Hibernate FK创建

当引用的table没有主键时,可以通过以下步骤禁用Hibernate在ManyToMany关系中创建外键(FK):

  1. 在实体类中,使用@ManyToMany注解定义关联关系。例如,假设有两个实体类EntityAEntityB,它们之间是多对多关系,可以在EntityA中使用@ManyToMany注解定义关联关系:
代码语言:txt
复制
@ManyToMany
@JoinTable(name = "join_table_name",
        joinColumns = @JoinColumn(name = "entity_a_id"),
        inverseJoinColumns = @JoinColumn(name = "entity_b_id"))
private Set<EntityB> entityBs;
  1. @JoinTable注解中,通过name属性指定关联表的名称,通过joinColumns属性指定当前实体类在关联表中的外键列名,通过inverseJoinColumns属性指定关联实体类在关联表中的外键列名。
  2. @JoinTable注解中,可以使用uniqueConstraints属性指定唯一约束。例如,可以使用@UniqueConstraint注解指定联合唯一约束:
代码语言:txt
复制
@JoinTable(name = "join_table_name",
        joinColumns = @JoinColumn(name = "entity_a_id"),
        inverseJoinColumns = @JoinColumn(name = "entity_b_id"),
        uniqueConstraints = @UniqueConstraint(columnNames = {"entity_a_id", "entity_b_id"}))
  1. 如果引用的table没有主键,可以在@JoinTable注解中使用foreignKey属性指定外键约束。通过foreignKey属性,可以使用@ForeignKey注解指定外键约束的名称和其他属性。例如,可以使用name属性指定外键约束的名称:
代码语言:txt
复制
@JoinTable(name = "join_table_name",
        joinColumns = @JoinColumn(name = "entity_a_id"),
        inverseJoinColumns = @JoinColumn(name = "entity_b_id"),
        foreignKey = @ForeignKey(name = "fk_name"))
  1. 通过以上步骤,可以禁用Hibernate在ManyToMany关系中创建外键(FK)。在禁用外键后,需要注意确保数据的一致性和完整性。

请注意,以上答案中没有提及具体的腾讯云产品和产品介绍链接地址,因为该问题与云计算品牌商无关。

相关搜索:被引用的表'hotel‘中没有与外键'fk_rooms_hotel’中的引用列列表匹配的主键或候选键在SQL中,如何创建对以元组作为其主键的表的引用?当PostgreSQL不同步时,如何重置所有表的主键序列?Entity Framework无法创建外键约束,“被引用的表中没有主键或候选键...”在连接表中使用复合主键时,Hibernate没有正确映射对象(“类型的值不正确”异常如何在对引用表执行update或delete操作之前禁用使用架构绑定创建的视图当IE的DOM中没有id="“时,我如何从VBA中获取HTML按钮引用?当标签是可变的并且没有引用基础镜像版本时,如何检测新版本的docker镜像?当没有相应的记录存在时,我如何在Access 2016中引用子窗体的链接子字段?当没有可连接的清空列时,如何用另一个表中的值更新sql表?当javadoc没有附加到依赖项时,如何将javadocs引用到Maven的eclipse插件中的依赖项当外键使用相同的列时,如何为同一个表提供2个反向引用?当一个类没有出现在引用中时,我如何从我的vb解决方案中删除这个类?当目标表单的表没有匹配的条目时,如何在两个表单之间的一对多关系中填充数据?GoogleAppScript -如何在特定的表行中自动勾选复选框,当该行的详细信息用于创建谷歌日历事件时?如何禁用拆分行(而不是表!)在C#的Itext7中,当一行太大而不能放在第一页时?当没有从我的表中选择记录时,我如何在按钮上放置一个模式。我正在使用bootstrap 4当单元格包含引用另一个工作表中另一个单元格的公式时,如何获得要更新的时间戳?当一天中的某个时间过去时,我们如何创建触发器(或任何对象)以将行插入到考勤表中?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • SSH框架之Hibernate第四篇

    nullable : 是否可以为空 inserttable : 是否可以插入 updateable : 是否可以更新 columnDefinition : 定义建创建此列...secondaryTable : 从名.如果此列不建在主表上(默认键在主表),该属性定义该列所在从名字. 2.4主键生成策略 通过annotation(注解)来映射hibernate...* 删除主表数据: * 有从数据引用 * 1、不能删除 * 2、如果还想删除,使用级联删除 * 没有数据引用:随便删 *...:不涉及保存失败问题: 4.2.2删除操作 /** * 删除操作 * 在多对多删除,双向级联删除根本不能配置 * 禁用 * 如果配了的话,如果数据之间有相互引用关系...在没有事务情况下: save会去数据库中保存,hibernate提供了一个内置事务来执行。 persist什么都不会做。

    3.5K20

    史上最简单JPA关联教程

    1.首先是一对一关系介绍,这边一对一关系分别是Goods和GoodsDetail(商品和商品详细) 关联注释为@OneToOne Goods实体类: package com.lzq.jpa.entity...但是没有设置JsonIgnore 一方就会全部关联查询出来。这是这个方法缺陷,可以采用其他方法,方法就在上面给出博客里面。 请求结果如下所示: ? ?...身高 */ @Column(name = "height", nullable = true, length = 10) private Integer height; /** * 用户所创建地址信息...地址详情信息 */ @Column(name = "detail", nullable = true, length = 100) private String detail; /** * 地址所创建用户信息...,虽然是两张,但是在运行项目的时候会自动生成第三张关系映射表,名称和字段,就是@ManyToMany下面设置字段和名称,还有外键也是在ForeignKey里面设置

    1.8K60

    如何在 Spring Boot 中 读写数据

    JPQL查询语言:以面向对象方式来查询数据。 1.3 Hibernate Hibernate 框架可以将应用中数据模型对象映射到关系数据库技术。...如何在 Spring Boot 中 读写数据 (5)@Basic 指定类变量读取方法到数据库表字段映射关系。对于没有任何特殊注解getXxxx()方法,默认带有 @Basic 注解。...如何在 Spring Boot 中 读写数据 (7)@Transient 类变量注解,表示该变量不是一个到数据库字段映射。...private List user; 如果不指定@JoinColumn 注解,Hibernate会自动生成一张中间来对用户和部门进行绑定,这张中间默认命名规则为:实体类名_实体类中指定属性名...多对多关系一般通过创建中间来进行关联,这时就会用到 @JoinTable注解。

    15.9K10

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

    插入数据时候,就将JavaBean对象拆分,拼装成SQL语句 查询数据时候,用SQL把数据库列组合,拼装成JavaBean对象 也就是说:javaBean对象和数据列存在映射关系!...(obj); 【保存或者更新方法】 没有设置主键,执行保存; 有设置主键,执行更新操作; 如果设置主键不存在报错!...@Type(type="double") // 允许你去指定Hibernate里面的一些类型 private Double price; // 价格,如果没有添加注解,也会自动生成在中 最后我们在src...,但是订单就变成这个鬼样了: 订单没有关联客户id,这是为什么呢?...使用@ManyToMany注解来配置多对多,只需要在一端配置中间,另一端使用mappedBy表示放置外键维护权。

    1.8K00

    Hibernate框架学习之注解配置关系映射

    有人可能会有疑问,usercode一端放弃对关系管理没有设置外键列,那么我们是如何通过usercode获得userinfo引用呢?...hibernate通过左连接将根据外键列值和usercode主键值连接了两张,于是我们可以通过usercode主键一次性查到两张对应记录,最后为我们返回相应实例。...比如我们想要获取一个userinfo实例,那么hibernate会先根据指定主键值查一次userinfo,然后需要用到usersex相关信息时候,hibernate会拿userinfo主键值再去查一次...综上,我们介绍了关系型数据库中常见几种关联关系,并介绍了Hibernate如何利用注解对实体类进行映射。...读者在实际项目开发中使用到这些关联关系时候,想必对于Hibernate映射操作会有更加深刻认识。总结不到之处,望指出!

    2.2K90

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

    插入数据时候,就将JavaBean对象拆分,拼装成SQL语句 查询数据时候,用SQL把数据库列组合,拼装成JavaBean对象 也就是说:javaBean对象和数据列存在映射关系!...(obj); 【保存或者更新方法】 没有设置主键,执行保存;有设置主键,执行更新操作; 如果设置主键不存在报错!...如何设定类属性不在中映射?这两个问题我们一起解决。废话不多说,直接上例子。在cn.itheima.domain包下再编写一个Person实体类,同样使用注解配置。...,但是订单就变成这个鬼样了: 订单没有关联客户id,这是为什么呢?...使用@ManyToMany注解来配置多对多,只需要在一端配置中间,另一端使用mappedBy表示放置外键维护权。

    1.8K10

    JPA实体类中注解

    @Entity   标注于实体类上,通常和@Table是结合使用,代表是该类是实体类 @Table   标注于实体类上,表示该类映射到数据库中没有指定名称的话就表示与数据库中表名为该类简单类名名相对应...,例如我们用hibernate实现就是有hibernate来控制   GenerationType总共有四个:   AUTO:   TABLE:由一个来维护主键,这个表记录上一次生成主键,然后+1...默认加载为立即加载 *ToMany 默认加载方式为懒加载 @Entity @Entity标记在类名上面,作为实体类标识 @Table 实体类与其映射数据库名不同名需要使用 @Table...updateable:表示在ORM框架执行更新操作,该字段是否应该出现在UPDATE语句中,默认为true。对于一经创建就不可以更改字段,该属性非常有用,如对于birthday字段。 ...,其关联实体也应当被更新或删除  例如:实体User和Order是OneToMany关系,则实体User被删除,其关联实体Order也应该被全部删除 @ManyToMany 描述一个多对多关联

    3.9K70

    Hibernate学习笔记 多表映射

    前面说了Hibernate映射,由于是实体类和数据之间一对一映射,所以比较简单。现在就来说说多表映射,这需要涉及到多个实体类和数据之间关系。因此稍微复杂一点。...有的同学可能想到了,多对一注解应用到字段上没有问题。但是一对多注解,如何应用到普通字段上呢。所以,这里需要一个集合。...对于单向一对多映射,Hibernate会建立一个映射表,比如这里就会建立一个article_comment内容就是两张主键。orphanRemoval指定当出现孤立数据是否删除孤立数据。...ManyToMany 有了一对一、一对多、多对一映射概念之后,多对多就很容易理解了。...另外需要注意是,使用多对多映射,不能把级联属性指定为CascadeType.DELETE或者CascadeType.ALL,我们应该不希望在删除一篇文章标签,同时将该标签下所有文章都删除吧?

    1.6K10

    Hibernate关联关系

    ="cn.tedu.bean.Wife"> 启动服务器我们将会看到Hibernate已经为我们创建了两张husband和wife,其中wife主键设置为husband外键了(wifeid...,那么我们此时就需要在两个实体类中都要使用OneToOne注解,但是我们使用了OneToOne就会在两张中都会将对方主键作为自己外键,显然是没有必要,冗余。...,在创建关联关系时候,外键总是在多一方,即是一一方主键作为多一方外键 单向外键关联 前面已经说过,单向外键关联是只能单向访问,只能一张访问另外一张,比如通过One一方可以访问到Many...,默认创建第三张名称为 : 名_名,但是我们可以使用@JoinTable这个注解来修改第三张名称 其中name属性可以修改 @ManyToMany 在多对多关系中使用,在实体类对象get...-- 配置如果这个没有创建,那么就会自动创建,如果已经创建了,那么会自动更新 --> update</property

    6.3K30

    mysql系列一

    列N] FROM 名; SELECT empno, ename, sal, comm FROM 名; 3) 完全重复记录只一次 查询结果中多行记录一模一样,只显示一行。...主键约束(唯一标识) ****非空*** ****唯一*** ****被引用****(学习外键) * 某一列被指定为主键后,该列就不能为空,不能有重复值出现。...概念模型在数据库中成为 数据库多对一关系,只需要在多方使用一个独立列来引用1方主键即可 /*员工*/ create talbe emp ( empno int primary...语法:CONSTRAINT 约束名称 FOREIGN KEY(外键列名) REFERENCES 关联(关联主键) 创建指定外键约束 create talbe emp ( empno...*****从主键即是外键! 8. 数据库多对多关系 在中建立多对多关系需要使用中间,即需要三张,在中间中使用两个外键,分别引用其他两个主键

    97320

    Spring 全家桶之 Spring Data JPA(五)

    注解,表明多对多关系 @JoinTable表示配置中间,name表示中间名称,joinColumns配置是当前对象在中间外键,name值得值中间主键,referencedColumnName...@ManyToMany:声明映射关系为多对多关系,targetEntity为对方实体类字节码 @JoinTable:配置中间,name为中间名称, joinColumns配置是当前对象在中间外键...,name值得值中间主键,referencedColumnName当前类对应主键 inverseJoinColumns:对方对象在中间外键 */ @ManyToMany(targetEntity...语句,执行了3条create语句,2条insert语句 查看数据库,中间没有插入数据,user和role关联关系没有建立成功 新增testSave0()方法,在user一侧建立用户到角色关联关系...,因为role在执行往中间执行insert操作中已经存在了user插入数据,所以出现了主键冲突报错 因此需要user和role一方放弃维护权,修改Role实体类中关联关系,mappedBy

    2.1K20

    SQL基础--> 约束(CONSTRAINT)

    KEY 主键约束P 唯一标识出每一行,且不允许空值值,一个只能有一个主键约束 FOREIGN KEY 外键约束R 一个引用了其它列,使得存在依赖关系,可以指向引用自身列...:CHECK 条件约束 何时创建约束: 建同时 建之后 可以在级或列级定义约束 列级约束:只能引用一个列并且它属于列定义一部分,可定义成任意类型完整性约束。...外键约束对delete语句影响: 删除主表数据,如果从有对该数据引用,要先将从数据处理好。主表才有可能违反约束。...,主表中一行数据被删除,ORACLE自动将从中依赖于它记录外键也删除。...定义或启用UNIQUE或PRIMARY KEY约束系统会自动创建UNIQUE或PRIMARY KEY索引 --启用约束不支持CASCADE,对被级联禁用约束应根据需要逐个启用 SQL>

    1.7K20

    高级框架-springDate-JPA 第二天【悟空教程】

    思考: 有没有可能输出是甘河大厦,并且数据库数据也变成了甘河大厦呢? 如果真的发生了这种情况,是如何做到呢? 答案: JPA 快照机制(其实就是 hibernate 快照机制)。...* 2、如果配置了放弃维护关联关系权利,则不能删除(与外键字段是否允许为 null,没有关系) * 因为在删除,它根本不会去更新从外键字段了。...* 3、如果还想删除,使用级联删除 * 没有数据引用:随便删 * 在实际开发中,级联删除请慎用!...都会往中间插入数据,中间 2个字段又作为联合主键,所以报错,主键重复,解决保存失败问题:只需要在任意一方放弃对中间维护权即可,推荐在被动一方放弃,配置如下: @ManyToMany(mappedBy...* 删除主表数据: * 有从数据引用 * 1、不能删除 * 2、如果还想删除,使用级联删除 * 没有数据引用:随便删 * 在实际开发中,级联删除请慎用!

    2.5K10
    领券