hibernate两个表之间的关联关系,主键和外键的类型不同

问题描述

hibernate两个表之间的关联关系,主键和外键的类型不同
现在有两个表,表a和b两个表,a里面的主键为aid,b的主键为bid,b中有a的外键aid,
现在aid的类型为int类型的,b表中的aid为string类型的,如何建立关联关系才能够解决当前报错的问题呢?
报错信息如下:
Wrong column type in b for column aid. Found: varchar expected: integer
这个错误的意思是说,在b表中找到了varchar类型的aid,但是我现在在持久化类中配置的是integer类型的,所以报错,hibernate有什么好的配置方式来解决这个问题吗?

解决方案

1.如果两个表是外键(Foreign Key)关联关系,那么字段的类型应该保持一致,而且id一般应该是数值型而不是字符型。

2.如果是类型不匹配,那么可以考虑先将String类型的字段parseInt或者将Integer强转为String.

解决方案二:
干嘛两边类型要不一致呢?这不是自己找麻烦么。

时间: 2025-01-29 20:47:38

hibernate两个表之间的关联关系,主键和外键的类型不同的相关文章

Hibernate中表与表之间的级联关系

问题描述 Hibernate中表与表之间的级联关系 2C 投票系统1. # 需求: 用户可以创建投票也可以_参与投票2.数据库结构如下 1.感觉VOTER表应该是 多对多 的中间表2.VOTE表与USERS表之间存在明显的多对一关系但是结合 VOTE与VOTER和USERS三者来看 又好像 VOTE表与USERS表之间存在明显的多对多关系 此时的表间关系 VOTE表与USERS表之间 好像是存在 多对一 又存在 多对多 这样合理吗? 解决方案 1:多对1的关系?????? 例如部门Departm

数据库中两张表之间的数据同步增加、删除与更新实现思路_MsSql

分别创建增加.删除.更新的触发器(Trigger)来达到两张表之间数据同步的目的. 1:数据同步增加: 如有两张表--A表和B表,创建触发器使当A表插入数据后B表也同步插入数据.其中B表插入数据的字段需要同A表中的字段相对应. 复制代码 代码如下: CREATE TRIGGER 触发器名称 ON A表 AFTER INSERT AS BEGIN INSERT INTO B表(B表字段1,B表字段2,B表字段3) SELECT A表字段1,A表字段2,A表字段3 FROM INSERTED END

快速理解MySQL中主键与外键的实例教程_Mysql

主键与外键的关系,通俗点儿讲,我现在有一个论坛,有两张表,一张是主贴 thread,一张是回帖 reply 先说说主键,主键是表里面唯一识别记录的字段,一般是帖子id,体现在访问的时候,例如是 thread.php?id=1   表示我要访问的是帖子id是1 的帖子- 再来说说外键,当我们删除某个帖子的时候,需要执行另一个操作,就是删除所有回帖,如果正常情况下,我们需要执行两次delete操作(thread和 reply),这时候如果存在外键,例如,在reply 表里面建立一个指向thread表

如何区分SQL数据库中的主键与外键_MsSql

一.什么是主键.外键: 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键比如 : 学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯一的,学号就是一个主键 用户表(用户名.密码.登录级别) 其中用户名是唯一的, 用户名就是一个主键 上机记录表(卡号,学号,姓名.序列号) 上机记录表中单一一个属性无法唯一标识一条记录,学号和姓名的组合才可以唯一标识一条记录,所以 学号和姓名的属性组是一个主键 上机记录表中的序列号不是成绩表的

《SQL初学者指南(第2版)》——1.4 主键和外键

1.4 主键和外键 请留意每个表的第1列:即Customers表中的CustomerID和Orders表中的OrderID.这些列通常称为主键(primary key).主键之所以有用和有必要,有两个原因.首先,它们使你能够唯一地标识表中一个单独的行.例如,如果想要查找Bob Davis这一行,我们可以只使用CustomerID列来获取数据.主键还确保了唯一性.当指定CustomerID列作为主键时,就保证了表中的该列针对每一行都拥有一个唯一的值.即使在数据库中有两个不同的人都叫做Bob Dav

《SQL初学者指南》——1.6 主键和外键

1.6 主键和外键 SQL初学者指南请留意每个表的第一列:即Customers表中的CustomerID和Orders表中的OrderID.这些列通常称为主键(primary key).主键之所以有用和有必要,有两个原因.首先,它们使你能唯一地标识表中一个单独的行.例如,如果想要查找William Smith这一行,我们可以只使用CustomerID列来获取数据.主键还确保了唯一性.当指定CustomerID列作为主键时,就保证了表中的该列针对每一行都拥有一个唯一的值.即使在数据库中,有两个不同

如何区分SQL数据库中的主键与外键

一.什么是主键.外键: 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键比如 : 学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯一的,学号就是一个主键 用户表(用户名.密码.登录级别) 其中用户名是唯一的, 用户名就是一个主键 上机记录表(卡号,学号,姓名.序列号) 上机记录表中单一一个属性无法唯一标识一条记录,学号和姓名的组合才可以唯一标识一条记录,所以 学号和姓名的属性组是一个主键 上机记录表中的序列号不是成绩表的

数据库中主键和外键的设计原则

主键和外键是把多个表组织为一个有效的关系数据库的粘合剂.主键和外键的设计对物理数据库的性能和可用性都有着决定性的影响.      必须将数据库模式从理论上的逻辑设计转换为实际的物理设计.而主键和外键的结构是这个设计过程的症结所在.一旦将所设计的数据库用于了生产环境,就很难对这些键进行修改,所以在开发阶段就设计好主键和外键就是非常必要和值得的.  首先来谈:主键.  关系数据库依赖于主键 --- 它是数据库物理模式的基石.主键在物理层面上只有两个用途: 1. 惟一地标识一行. 2. 作为一个可以被

PowerDesigner-VBSrcipt-自动设置主键,外键名等(SQL Server)

原文:PowerDesigner-VBSrcipt-自动设置主键,外键名等(SQL Server) 在PowerDesigner中的设计SQL Server 数据表时,要求通过vbScript脚本实现下面的功能:   主键:pk_TableName 外键:fk_TableName_ForeignKeyColumnList   当字段作为主键,而且类型为smallint,int,bigint,那么要设置Identity =true. 当字段作为主键,而且类型为uniqueidentifier,那么