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

0

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

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

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

таблица A

ida, ref_no, схема, тип

таблица B

idb, accountno, sechema, type

Мне нужно получить "accountno" из tableB для данного "ref_no", который имеет одинаковые "секретность" и "тип". Я могу получить "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);
  • 0
    Если что-то, что вы пробовали, приводит к исключению, пожалуйста, включите исключение (полный стек вызовов) в вопрос. Это часто помогает найти подходящий ответ, а также помогает другим найти вопрос, если у них есть подобная проблема.
Теги:
spring-boot
spring-data-jpa
hibernate-mapping

1 ответ

0

Если вы используете 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

  • 0
    Thx Cerp0. Я попробую и дам вам знать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню