Внутреннее соединение двух таблиц, которые не отображаются с помощью HQL

У меня есть таблица A и таблица b, которые не имеют отношения. Но таблица A, таблица B сопоставлены с сущностью, и между сущностями нет никакой связи. Предположим, таблицы отображаются, как показано ниже.

@Entity
@Table(name = "tableA")
public class TableA

@Entity
@Table(name = "tableB")
public class TableB

таблица А

Ида, ref_no, схема тип

таблица B

idb, accountno, секема тип

Мне нужно получить «accountno» из tableB для данного «ref_no», который имеет такие же «sechema» и «type». Я могу получить "accountno", используя приведенный ниже собственный SQL-запрос в моем классе репозитория, который реализует CrudRepository.

@Query(value = "SELECT b.accountno FROM DB.tableA as a INNER JOIN DB.tableB as b ON b.sechema = a.sechema AND b.type = a.type WHERE a.ref_no= ?1", nativeQuery = true)
Integer findByRefNo(String refNo);

Может ли кто-нибудь помочь мне преодолеть эту проблему, потому что, используя собственный запрос, мне нужно изменить, если имя БД отличается.

Я пробовал с помощью ниже, но это дало мне ошибки.

@Query(value = select b.accountno from TableA a join TableB b where b.sechema = a.sechema and b.type = a.type and (:refNo is null or a.refNo = :refNo)")
Integer findByRefNo(@Param("refNo") String refNo);

Если что-то, что вы попробовали, привело к возникновению исключения, укажите это исключение (полный стек вызовов) в вопросе. Это часто помогает найти подходящий ответ, а также помогает другим найти вопрос, если у них есть аналогичная проблема.

Jens Schauder 28.05.2018 06:55
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
1
492
1

Ответы 1

Если вы используете Hibernate 5.1+, запрос в HQL будет почти таким же:

@Query("select b.accountno from TableA a join TableB b on b.sechema = a.sechema and b.type = a.type where a.ref_no= ?1")
Integer findByRefNo(String refNo);

Подробнее: 1, 2

Спасибо Cerp0. Я попробую и дам знать.

Uditha 26.05.2018 16:33

Другие вопросы по теме