JPA - это не система реляционных баз данных, в которой вы можете выполнять запросы, такие как соединение, левое соединение или внешние соединения, это технология отображения объектов.Вы также можете сделать тот же выбор, точно так же, как эти аналоги СУБД, но с другим подходом.
Что вам нужно сделать, это сделать объект, а затем связать ваш второй объект с вашим первым объектом, что является правильным способом связать2 или более объектов.Объекты, о которых я говорю, это твой Стол.См. Мой пример ниже:
- Table1: Items.java
- ...
- // выполните импорт здесь ...
- // делать здесь свои аннотации, такие как
- @ Entity
- @ Table (name = "Items")
- открытый класс Items реализует Serializable {
- private String id;
- private String itemno;
- private String описание;
- private Set vendors;// это вторая таблица (отношение 1: n)
- ...
- // не забудьте ваш конструктор
- // в вашем установщике и получателе дляПоставщики выполняют следующие действия:
- @OneToMany (cascade = CascadeType.ALL, fetch = FetchType.EAGER)
- @JoinColumn (name = "id")
- общедоступный набор getVendors () {
- вернуть поставщиков;
- }
- public void setVendors (Set vendors) {
- this.vendors = vendors;
- }
- ...
- }
Table2: Vendors.java
- @ Entity
- @ Table (name = "Vendors")
- открытый класс Vendors реализует Serializable {
- private long id;
- private String company;
- частный строковый контакт;
- private String sequence;
- ...
- public Vendors () {}
- ...
- // в вашемsetter & getter
- @Id
- public long getId () {
- return id;
- }
- public void setId (longid) {
- this.id = id;
- }
- ...
- }
Теперь на вашемзапрос, просто сделать обычный выбор, как в ff:
- public void makeQuery (String seq) {
- EntityManagerFactory emf = Persistence.createEntityManagerFactory (...);
- EntityManager em = emf.createEntityManager ();
- TypedQuery query = em.createQuery ("ВЫБЕРИТЕ i, j.contact, j.company, j.sequence ИЗ элементов i, ВЛЕВОЕ НАРУЖНОЕ СОЕДИНЕНИЕ i.vendors j ГДЕ i.vendors.sequence =: seq
- ORDER BY i.id ", Items.class);
- Список items = query.setParameter (" sequence ",seq) .getResultList ();
- ...
- }
Теперь вы можете обратиться кваши 2-ые поставщики таблиц с помощью items.vendors.company ... и т. д.
Один из недостатков этого метода заключается в том, что JPA создает связанные объекты в виде Set, см.объявление в Таблице 1 (Предметы) - частный набор поставщиков.Поскольку это был Набор, последовательность не в том порядке, в котором она была получена, в отличие от использования Списка.
Надеюсь, это поможет ...
С уважением, Нельсон Деограций