Я работаю над набором совместимости JPA для моей стажировки ... Часть этого набора включает в себя тестирование правильной реализации угловых случаев.@ ManyToMany/@ OneToMany атрибут mappedby для двунаправленной ассоциации
@ManyToMany
имеет атрибут mappedBy. JPA заявляет, что:
String mappedBy - поле или свойство, которому принадлежат отношения. Требуется, если связь не является однонаправленной.
Значение по умолчанию не задано - столбец по умолчанию пуст.
Учитывая двунаправленный @ManyToMany
- этот пример из самой спецификации JPA 2.0 JSR-317!
Клиент
@ManyToMany
@JoinTable(name="CUST_PHONES")
public Set<PhoneNumber> getPhones() { return phones; }
PhoneNumber
@ManyToMany(mappedBy="phones")
public Set<Customer> getCustomers() { return customers; }
Атрибут mappedBy не был определен в @ManyToMany
из Customer
! Есть ли по умолчанию для двунаправленных сопоставлений, о которых я не знаю, или что?
я смотрел на подобные случаи и нашел: @OneToOne
- mappedBy не является обязательным, по умолчанию не @OneToMany
- точно так же, как и @ManyToMany
(mappedBy не является обязательным для двунаправленной, не по умолчанию)
Короче говоря, мой вопрос : Для @ManyToMany
и @OneToMany
, что должно быть помещено в атрибут mappedBy для владельца стороны отношения (Customer
в примере)?
Комплект совместимости - просто причудливое название для модульных испытаний аннотаций, используемых JPA. Сейчас основное внимание уделяется ORM ... вы говорите, что эти модульные тесты (или что-то еще по этим строкам) уже существуют? Компания, у меня есть стажировка, хочет, чтобы я разработал это как часть тестирования своего приложения с открытым исходным кодом. Я как бы понимаю использование 'mappedBy', я просто смущен относительно его точной формулировки. Почему он говорит, что аннотация mappedBy требуется для не-однонаправленных отношений без исключения принадлежащей стороне двунаправленного отношения? – Pimgd
TCK используется для проверки реализации JPA. Он не используется для тестирования приложения, созданного с помощью JPA. Поэтому я предполагаю, что ваш комплект может быть полезен. Вероятно, это так говорит, потому что разработчик ленив и думал, что пользователи аннотации будут читать спецификацию JPA или javadoc самой аннотации, где подробно объясняется использование атрибута mappedBy. –
", где подробно объясняется использование атрибута mappedBy." Не могли бы вы дать мне ссылку на эту документацию? Я могу найти некоторые из них в Интернете, но, похоже, попугай, что я могу прочитать в спецификации JSR-317 ... и не проливает свет на эту конкретную ситуацию. – Pimgd