JPA / Hibernate Однонаправленный OneToMany как 'mappedBy' - PullRequest
0 голосов
/ 27 марта 2019

Недавно я нашел такое отображение в нашем репо:

@Entity
...
public class Foo{
     ...
     @OneToMany(mappedBy = "someField", cascade = CascadeType.ALL, orphanRemoval = true)
     public Set<Bar> bars;
     ...
}

@Entity
@IdClass(Bar.Key.class)
...
public class Bar{
     @Id
     public long someField;
     @Id
     public long anotherField;
     ...
     static class Key implements Serializable {
        public long someField;
        public long anotherField;
     }
}

В обеих таблицах нет внешних ключей. Я был удивлен, что в классе Bar нет поля @ManyToOne, а @OneToMany помечается без @JoinColumn как mappedBy. В любом случае это работает отлично: без избыточных обновлений - как будто это двунаправленное отображение. Я не эксперт в JPA / Hibernate, и я никогда не видел такого отображения в руководствах / руководствах / документах. Я пытался гуглить такое сопоставление, но не нашел объяснения. Можно ли отображать объекты таким образом? Спасибо!

1 Ответ

1 голос
/ 27 марта 2019

Двунаправленные сопоставления «один-ко-многим» и «многие-к-одному» в порядке.Но вам следует избегать однонаправленных связей один-ко-многим в вашей доменной модели.В противном случае Hibernate может создать неожиданные таблицы и выполнить больше операторов SQL, чем вы ожидали .

Определение однонаправленной связи один-ко-многим, похоже, не является проблемой.Вам просто нужен атрибут, который отображает связь и связь @OneToMany.

Ссылка см. Ссылку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...