У меня есть таблица, которая моделирует отношения, в которых страна может поддерживать несколько типов высоты тона.Таким образом, США поддерживают типы высоты звука 1, 2 и 3. MX поддерживает типы высоты звука 2, 3 и 4.
Таблица pitch_type
представляет собой простое значение ключа с pitch_type_id, ссылающимся на строковое значение.Таблица, которая объединяет типы с кодами стран, находится здесь:
CREATE TABLE `country_pitch` (
`country_pitch_id` INT NOT NULL AUTO_INCREMENT,
`country_code` VARCHAR(2) NOT NULL,
`pitch_type_id` INT NOT NULL,
PRIMARY KEY (`country_pitch_id`),
INDEX `fk_country_code_to_pitch_type_id_idx` (`pitch_type_id` ASC),
CONSTRAINT `fk_country_code_to_pitch_type_id`
FOREIGN KEY (`pitch_type_id`)
REFERENCES `pitch_type` (`pitch_type_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
выход:
---------------------------------------------------
| country_pitch_id | country_code | pitch_type_id |
---------------------------------------------------
| 1 | us | 1 |
| 2 | us | 2 |
| 3 | us | 3 |
| 4 | mx | 2 |
| 5 | mx | 3 |
| 6 | mx | 4 |
---------------------------------------------------
country_pitch_id
не используется, и важной концепцией является соответствие кода страны соответствующему типу pitch_type..
Я полагаю, что это лучше всего представить отношением ManyToMany, так как страна может иметь несколько типов шага, а тип шага может принадлежать нескольким странам.Моя цель состоит в том, чтобы смоделировать это в POJO, подобном следующему:
/**
* For a given market, US, CA, MX, etc, identify the available reach
* generation curve types
*/
@Entity(name = "country_pitch")
@Data
public class CountryPitchTypes {
public CountryPitchTypes() {}
@Column(name = "country_code")
private String countryCode;
@ElementCollection
@Convert(converter = PitchTypeConverter.class)
private List<PitchType> pitchTypes;
}
, но это отображение не работает "из коробки", потому что я пытаюсь сопоставить таблицу соединения с этой сущностью, поэтому я получаю Unknown column
ошибок.Можете ли вы подсказать мне, каким будет правильное дополнение к pojo, чтобы сопоставить эту таблицу с одним pojo со связанным списком?
Я чувствую, что аннотация @JoinTable необходима с какой-то группировкой, но я не знаю, как ее настроить.В конце дня, Я пытаюсь сопоставить таблицу country_pitch с классом CountryPitchTypes, группируя все типы высоты по коду страны.
Коды стран не являются частью нашей базы данныхкстатиТо есть, нет таблицы countries
, в которой значение country_id указывает на двухбуквенный код страны.