How to avoid duplicates in the database.
'1', 'Male'
'2', 'Male'
'3', 'Female'
to only save
'1', 'Male'
'2', 'Female'
or:
to only save
Countries
'1', 'UK'
'2', 'Brazil'
'3', 'China'
My database schema:
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';
-- Table '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';
-- Table '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';
I have models with relation many to many - person countries and one to many person-->gender
Model:
public class Country {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id_book")
private Integer id;
@Column(name = "name")
private String name;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name="bi_person_country", joinColumns=@JoinColumn(name="id_country"), inverseJoinColumns=@JoinColumn(name="id_person"))
private Set<Person> persons;
Model gender:
@Table(name = "bi_gender")
@Entity
public class Gender {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(name = "name")
private String name;
Person entity:
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id_person")
private Integer id;
@Column(name = "name")
private String name;
@Column(name = "last_name")
private String lastName;
@Column(name = "additional_info")
private String additionalInfo;
@ManyToMany(cascade = CascadeType.ALL, mappedBy = "persons")
private Set<Country> countries;
Adding person object:
Person person = Person();
Gender gender = new Gender();
gender.setGenderName(pepPersons.get(a).getGender());
gender = genderRepository.save(gender);
Country country = new Country();
country.setCountryName(pepPersons.get(a).getCountry());
country = countryRepository.save(country);
person.setName(pepPersons.get(a).getFirstName());
person.setLastName(pepPersons.get(a).getLastName());
person.setAdditionalInfo(pepPersons.get(0).getFunction());
person.setGender(gender);
Set<Country> countries = new HashSet();
countries.add(country);
person.setCountries(countries);
personRepository.save(person);