Моя модель (в качестве примера) выглядит следующим образом:
CREATE TABLE person (
id INT PRIMARY KEY,
name TEXT
...
);
CREATE TABLE team (
id INT PRIMARY KEY,
name TEXT
....
);
CREATE TABLE team_reference_persons (
team_id INT NOT NULL,
person_id INT NOT NULL,
uses_telephone BOOLEAN,
PRIMARY KEY (team_id, person_id),
FOREIGN KEY (team_id) REFERENCES team(id),
FOREIGN KEY (person_id) REFERENCES person(id)
);
И мое определение JPA:
@Entity
@Table(name = "team")
public class Team {
@Id
private Integer id;
@OneToMany
@JoinTable(name = "team_reference_persons", joinColumns = @JoinColumn(name = "team_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "person_id", referencedColumnName = "id"))
private List<Person> teamReferencePersons;
...
}
@Entity
@Table(name = "person")
public class Person {
@Id
private UUID id;
private String name;
...
}
Пока все хорошо, когда все, что вам нужно, это список людей накоманда.Но теперь мне нужно добавить свойство team_reference_persons.uses_telephone
из таблицы соединений в моем личном домене, поэтому я ищу способ сохранить логику людей, пока создаю новый подкласс.
private class TeamIndividual extends Person {
boolean uses_telephone;
}
Тогдаизменение List<Person>
на Team
сущности на List<TeamIndividual>
.Это возможно каким-то образом?JPA должен быть указан таким умным способом, что он добавляет свойство таблицы соединений к конечной целевой сущности (как для чтения, так и для сохранения).