Я хочу создать связь «многие ко многим» с дополнительным столбцом. Я настроил это:
@Entity
public class Configuration extends AbstractEntity {
@OneToMany(
mappedBy = "configuration",
cascade=CascadeType.ALL,
orphanRemoval = true
)
@JsonIgnore
private List<ConfigurationQuestion> configurationQuestions = new ArrayList<>();
public void addQuestion(QuestionDTO question) {
ConfigurationQuestion configurationQuestion = new ConfigurationQuestion(this,
question.getQuestion(), question.getResponse());
configurationQuestions.add(configurationQuestion);
}
}
Присоединиться к столу
@Entity
public class ConfigurationQuestion implements Serializable {
@EmbeddedId
private ConfigurationQuestionId id ;
@ManyToOne(fetch = FetchType.LAZY)
@MapsId("configurationId")
private Configuration configuration;
@ManyToOne(fetch = FetchType.EAGER)
@MapsId("questionId")
@JoinColumn(name="question_id")
private Question question;
private Integer response;
public ConfigurationQuestion(Configuration configuration, Question question,
Integer response) {
this.configuration = configuration;
this.question = question;
this.response = response;
this.id = new ConfigurationQuestionId(configuration.getId(), question.getId());
}
}
Встраиваемый идентификатор
@Embeddable
public class ConfigurationQuestionId implements Serializable {
private Long configurationId;
private Long questionId;
}
В вопросе у меня нет картирования, я хочу сделать это в одном направлении. Моя проблема, когда я пытаюсь сохранить что-то вроде этого. Я хочу сохранить конфигурацию, в которой в качестве вопроса задан только идентификатор, а не весь объект, он сохраняется отдельно.
В сущности Вопрос у меня нет отображения, я хочу сделать это в одном направлении. Моя проблема, когда я пытаюсь сохранить что-то вроде этого. Я хочу сохранить конфигурацию, в которой в качестве вопроса / вопросов используются только идентификаторы не всех объектов, она сохраняется отдельно.
Configuration configuration = new Configuration();
Question question = new Question();
question.setId(1L);
configuration.addQuestion(new QuestionDTO(question, 1));
repository.save(configuration);
Я получаю следующую ошибку. Я не хочу каскадно вносить изменения в сущность Вопрос, если я удаляю Cascade.ALL из Конфигурации, ничего не вставляя в таблицу соединений. Могу ли я сделать это, не найдя вопросов?
detached entity passed to persist: Question