? Реляционные дочерние атрибуты в стандартном поведении не доставляются при запросе родителя. Затем клиент должен перейти по ссылке.
я есть 3 таблицы в дБ
повышение квалификации
- training_id (шт.)
Профиль пользователя
- profile_id (шт.)
-training_profile (составная таблица)
- training_id
- profile_id
У меня уже есть запись в таблице user_profile, имеющая profile_id = 44, и я хочу создать новую запись для таблицы тренировок, а также связать эту новую тренировку с уже существующей записью user_profile, которая имеет идентификатор 44, но после того, как данные записей сохранены в таблице тренировок, но не вставлено в таблицу поиска user_training.
Мои классы объектов - Учебный класс
@Entity
@Table(name = "training", schema = "public")
public class Training implements java.io.Serializable {
@Id @GeneratedValue
@Column(name = "training_id", unique = true, nullable = false)
private Long trainingId;
@ManyToMany(fetch = FetchType.LAZY, mappedBy = "trainings")
private Set<UserProfile> userProfiles = new HashSet<UserProfile>(0);
@Column(name = "training_subject", length = 200)
private String trainingSubject;
public Training() {
}
public Long getTrainingId() {
return this.trainingId;
}
public void setTrainingId(Long trainingId) {
this.trainingId = trainingId;
}
public String getTrainingSubject() {
return this.trainingSubject;
}
public void setTrainingSubject(String trainingSubject) {
this.trainingSubject = trainingSubject;
}
public Set<UserProfile> getUserProfiles() {
return this.userProfiles;
}
public void setUserProfiles(Set<UserProfile> userProfiles) {
this.userProfiles = userProfiles;
}
}
Профиль пользователя
@Entity @Table (name = "user_profile", schema = "public")
Открытый класс UserProfile реализует java.io.Serializable {
@Id @GeneratedValue
@Column(name = "profile_id", unique = true, nullable = false)
private Long profileId;
@Column(name = "profile_description")
private String profileDescription;
@ManyToMany(fetch = FetchType.EAGER, cascade = { CascadeType.ALL })
@JoinTable(name = "user_training", schema = "public", joinColumns = {
@JoinColumn(name = "profile_id", nullable = false, updatable = false) }, inverseJoinColumns = {
@JoinColumn(name = "training_id", nullable = false, updatable = false) })
private Set<Training> trainings = new HashSet<Training>(0);
public UserProfile() {
}
public String getProfileDescription() {
return this.profileDescription;
}
public void setProfileDescription(String profileDescription) {
this.profileDescription = profileDescription;
}
public Set<Training> getTrainings() {
return this.trainings;
}
public void setTrainings(Set<Training> trainings) {
this.trainings = trainings;
}
}
Мой JSON пост через почтальона
И ответ получаю
Ответ показывает, что новая запись об обучении вставлена в таблицу с значением training_id 67. Не обнаружено связи для этого нового сохраненного обучения
снова он создал новую запись для обучения и не ассоциируется с существующим профилем пользователя. Я публикую curl -i -X POST -H "Content-Type: application / json" -d "{\" trainingSubject \ ": \" Oracle \ " , \ "userProfiles \": [\ "/ userProfiles / 44 \"]} "HTTP: // локальный: 8080 / API / тренинги