При использовании @ManyToOne обязательно в связанном классе использовать @OneToMany?
Я посмотрел 5-7 туториалов и даже, что-то похожее на документацию. И везде, указывалось, что если нужно создать связь в таблице «многие к одному», то обязательно следует создать в связанной таблице «один ко многим».
Например https://jakarta.ee/specifications/persistence/2.2/apidocs/javax/persistence/onetomany
Используя ORM, сгенерировались у меня 2 таблицы.
Order и Customer
В order все красиво, там только нужные поля
id | name | CUST_ID
но в Customer из-за
@OneToMany(targetEntity=com.acme.Order.class, cascade=ALL,
mappedBy="customer")
public Set getOrders() { return orders; }
получились поля
id | name | orders
Мне столбец orders не нужен. Я попробовал не добавлять @OnetoMany. А оставил только в сущности Order @ManyToOne и получил на выходе две таблицы, без лишних столбцов. Зачем везде просят использовать с @ManyToOne @OneToMany?
Ответы (1 шт):
Никто вас не просит это делать, скорее всего это совет, типа как лучший вариант, потому как OneToMany много способов, просто двунапрявляные связи в OneToMany это так скажем универсальный вариант, где есть свои плюсы и минусы, но плюсов больше, по сравнению, с другими вариантами OneToMany. Сначала у вас была двунаправленая связь, что позволяло Вам, переносить состояние с родительской сущности на дочернюю, при чем дочерняя сторона знала, кто родитель, а когда вы ставите только с одной стороны или OneToMany, или же только с другой стороны ManyToOne, то только родительская сторона знает про дочернюю сторону, дочерняя ничего не знает о родителе, к тому же для двунаправленой связи, нужны еще методы синхнонизации, то есть много чего всякого чего нельзя описать здесь коротно и ясно.