Как связать три таблицы, используя только одну сущность / класс в Spring & Hibernate - PullRequest
0 голосов
/ 05 июля 2019

У меня есть только одна сущность - Школа (класс). У меня там 7 полей, и эти поля из 3 разных таблиц. Например, первая таблица называется «Классная комната», вторая - «Учителя», третья - «Тема». Преподаватели и предметная таблица связаны pk: subject_id, а учебная таблица и таблица учителей - classroom_id.

Я пробовал вторичные таблицы, но, похоже, это не правильно. Как соединить эти таблицы внутри одной сущности и написать запрос в DAO IMPLementation

Ответы [ 2 ]

2 голосов
/ 05 июля 2019

Вы должны использовать Entity для каждой таблицы. Если вам нужно выбрать класс Model, не связанный с базой данных, вы можете легко это сделать с помощью spring-data-jpa.

После создания класса Model (например, School) просто используйте следующий пример для запроса:

class ProgrammerNameAndCity{
   fields...
   allArgConstructor...
}

public interface ProgrammerRepository extends JpaRepository<Programmer,Long> {
    @Query(" select new com.zlrx.database.pojo.ProgrammerNameAndCity(p.name,p.address.city) " +
                "from Programmer p where  p.idNumber=?1")
    ProgrammerNameAndCity findNameAndCityByIdNumber(String idNumber);
}

В этом примере у программиста есть поле адреса (OneToOne), но вы можете создать любой запрос, здесь важен вызов конструктора модели.

Если вы хотите использовать простой интерфейс sql или impl вместо интерфейса для запроса, вы также можете использовать Spring RowMapper.

0 голосов
/ 05 июля 2019
class ProgrammerNameAndCity{
    fields...
    allArgConstructor...
}

public interface ProgrammerRepository extends JpaRepository<Programmer,Long> {
    @Query(" select new com.zlrx.database.pojo.ProgrammerNameAndCity(p.name,p.address.city) "
        + "from Programmer p where  p.idNumber=?1")
    ProgrammerNameAndCity findNameAndCityByIdNumber(String idNumber);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...