猿问

休眠避免数据库中的重复

如何避免数据库中的重复。


'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'; 

我有与多对多关系的模型 - 国家和一对多的人 - >性别


万千封印
浏览 168回答 3
3回答

holdtom

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

ABOUTYOU

如果我理解正确的话,国家和性别表是主数据,分别包含独特的国家和性别。在这种情况下,您不需要级联,在应用程序中获取所需的性别,将其设置在人员上并坚持人员。去除那个cascade = CascadeType.ALL更新Gender male = genderRepository.findByName("Male");person.setGender(male);...personRepository.save(person)
随时随地看视频慕课网APP

相关分类

Java
我要回答