Java spring + jpa + hibernate у одного владельца много объектов (ManyToOne и OneToMany)

168
28 июля 2018, 02:30

Я использую spring + jpa + hibernate и мне нужно чтобы у объекта родителя (пользователь) было много потомков (заметок), следовательно я должен использовать аннотации ManyToOne и OneToMany, но насколько я понимаю аннотацией ManyToOne помечается родитель, а потомки соответственно OneToMany, но мне надо наоборот.

Я правильно понимаю что без промежуточных таблиц не обойтись (использовать ManyToMany)?

Answer 1

Советую всегда читать документацию. У тебя обычная ситуация - один ко многим. Делаешь примерно так (я пропустил все свойства и методы, которые не относятся к деу):

@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);
READ ALSO
Android TableLayout расстояние между столбцами

Android TableLayout расстояние между столбцами

В каждом tableRow находится 2 TextViewКак можно сделать промежуток между самым длинным первым TextView и вторым TextView

185
Прочитать fb2 в java (андроид устройства)

Прочитать fb2 в java (андроид устройства)

Хотел сделать Ридер книжек с форматом fb2 на планшет с четвёртым андроидом, и упёрся в проблему: а как прочитать этот формат? Можете подсказать...

158
В чем ошибка присвоения действия при нажатии на Маркер Google Maps?

В чем ошибка присвоения действия при нажатии на Маркер Google Maps?

только на третий-четвертый раз срабатывает действие, которое работает при нажатии на определенный маркер в Google MapsВ связи с чем такое происходит?...

174
Распознавание речи Android

Распознавание речи Android

В сети очень много вопросов пропавшему автору интересного кода - прямого распознавания речиКод выдаёт 9-ю ошибку

200