为了账号安全,请及时绑定邮箱和手机立即绑定

休眠避免数据库中的重复

休眠避免数据库中的重复

万千封印 2021-07-06 18:52:57
如何避免数据库中的重复。'1', 'Male''2', 'Male''3', 'Female'只保存'1', 'Male''2', 'Female'或者:只保存国家    '1', 'UK'    '2', 'Brazil'    '3', 'China'我的数据库架构:CREATE TABLE IF NOT EXISTS `bi_person` (        `id_person` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,        `name` VARCHAR(50) NOT NULL,        `last_name` VARCHAR(100) NOT NULL,         `additional_info` VARCHAR(50) NOT NULL,        `gender_id` VARCHAR (50) UNIQUE REFERENCES bi_gender    ) COLLATE='utf8_bin';-- 表 'bi.gender`CREATE TABLE IF NOT EXISTS `bi_gender` (        `id_gender` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,        `name`  VARCHAR(10) NOT NULL      ) COLLATE='utf8_bin';-- 表'bi.country`CREATE TABLE IF NOT EXISTS `bi_country` (        `id_country` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,        `name`  VARCHAR(10) NOT NULL     ) COLLATE='utf8_bin'; 我有与多对多关系的模型 - 国家和一对多的人 - >性别
查看完整描述

3 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

您必须将该列声明为 unique : @Column(unique = true)


查看完整回答
反对 回复 2021-07-14
?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

如果我理解正确的话,国家和性别表是主数据,分别包含独特的国家和性别。


在这种情况下,您不需要级联,在应用程序中获取所需的性别,将其设置在人员上并坚持人员。去除那个cascade = CascadeType.ALL


更新


Gender male = genderRepository.findByName("Male");

person.setGender(male);

...

personRepository.save(person)


查看完整回答
反对 回复 2021-07-14
  • 3 回答
  • 0 关注
  • 167 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号