Было бы интересно опубликовать выполненные запросы и таблицы. Но я могу подумать об одном различии между этими двумя сопоставлениями (однонаправленное соотношение один-ко-многим и двунаправленное) в том, как они представлены на уровне базы данных.
По умолчанию однонаправленный один-ко-многим будет использовать таблицу соединения:
DATASET DATASET_DOCUMENT DOCUMENT
------- ---------------- --------
ID DATASET_ID ID
DOCUMENT_ID
В то время как двунаправленный 1009 * будет использовать следующее представление:
DATASET DOCUMENT
------- ----------
ID ID
DATASET_ID
В JPA 2.0 теперь можно использовать однонаправленную ассоциацию без таблицы соединения (в стандартном способе ), указав @JoinColumn
на стороне @OneToMany
:
@Entity
class Dataset {
@Id
@Column(name="ID")
public Long id;
...
@OneToMany
@JoinColumn(name="DATASET_ID", referencedColumnName="ID")
public List<Document> documents = new ArrayList<Document>();
}
Я бы попробовал вышеупомянутое.
Ссылки
- JPA 2.0 Спецификация
- Раздел 11.1.21 «Аннотация JoinColumn»
- JPA Wikibook