Я использую spring + jpa + hibernate и мне нужно чтобы у объекта родителя (пользователь) было много потомков (заметок), следовательно я должен использовать аннотации ManyToOne
и OneToMany
, но насколько я понимаю аннотацией ManyToOne
помечается родитель, а потомки соответственно OneToMany
, но мне надо наоборот.
Я правильно понимаю что без промежуточных таблиц не обойтись (использовать ManyToMany
)?
Советую всегда читать документацию. У тебя обычная ситуация - один ко многим. Делаешь примерно так (я пропустил все свойства и методы, которые не относятся к деу):
@Entity
public class User {
//...
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Note> notes = new ArrayList<>();
//...
public void addNotes(Note... notes) {
for (Note note : notes) {
note.setUser(this);
this.notes.add(note);
}
}
}
@Entity
public class Note {
//...
@ManyToOne
private User user;
//...
}
Это bidirectional вариант, самый оптимальный. Заметки добавляются Юзеру через метод addNotes
(он нужен для синхронизации обоих сторон). За счет каскадинга, сохранение Юзера и всех его заметок происходит через один вызов метода save() репозитория Юзера:
User user = new User(...);
user.addNotes(new Note(...), new Note(...));
userRepo.save(user);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
В каждом tableRow находится 2 TextViewКак можно сделать промежуток между самым длинным первым TextView и вторым TextView
Хотел сделать Ридер книжек с форматом fb2 на планшет с четвёртым андроидом, и упёрся в проблему: а как прочитать этот формат? Можете подсказать...
только на третий-четвертый раз срабатывает действие, которое работает при нажатии на определенный маркер в Google MapsВ связи с чем такое происходит?...
В сети очень много вопросов пропавшему автору интересного кода - прямого распознавания речиКод выдаёт 9-ю ошибку