Как сделать внутреннее соединение двух таблиц с JPA - PullRequest
2 голосов
/ 20 марта 2012

Как написать запрос JPA, который делает объединение между двумя сущностями, которые не имеют никакой ссылки между ними. Я имею в виду, что в сопоставлении не определено отношение

EntityA
@Id
long id

String field1
String field2

EntityB
@Id
String field1
@Id
String field2

Как мне написать подобное объединение в JPQL

select entityB from entityA,entityB
where entityB.field1 = entityA.field1
and entityB.field2 = entityA.field2

Спасибо

Ответы [ 2 ]

3 голосов
/ 20 марта 2012

Вы думаете на SQL, а не на ORM. В ORM вы создаете отношения между объектами (@OneToMany, @ManyToOne, @ManyToMany и т. Д.), И ORM использует эти отношения, чтобы определить, как они должны объединить их.

Вам необходимо обновить свои сущности, чтобы иметь эти отношения, а затем пройти объектную модель, чтобы сделать то, что вы хотите.

Вот место для начала: http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/#entity-mapping-association

1 голос
/ 20 марта 2012

Если между этими сущностями нет явных связей, невозможно выполнить явное соединение в JPQL.

Вы всегда можете записать запрос как декартово произведение. В зависимости от используемой СУБД, она может оптимизировать запрос так же эффективно, как и соединение. Однако примите во внимание, что физическая модель должна быть оптимизирована для этого эффекта. Это означает индексы и, если возможно, внешние ключи. Без него этот запрос будет крайне неэффективным по сравнению с объединением.

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