Как реализовать облегченную версию Entity с Jpa-репозиторием?

Иметь класс "полная сущность":

@Entity(name = "vacancy_dec_to_words")
public class VacancyDescriptionToWords {

    @Id
    @Column(name = "id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @JoinColumn(name = "vacancy_description_id")
    @ManyToOne(cascade = CascadeType.ALL)
    private VacancyDescription vacancyDescription;

    @JoinColumn(name = "words_id")
    @ManyToOne
    private Words words;

    @Column(name = "qty")
    private int qty;

    @Column(name = "create_date")
    private Date date;

    //...getters and setters

В некоторых методах мне нужно использовать только 2 столбца из этой базы данных: word_id и qty

Я стараюсь следующим образом:

Проекции https: //docs.spring .io /пружинно-данные /JPA /документы /2.1.2.RELEASE /ссылка /HTML /# проекции

public interface QtyWords {
    Long getWords();
    Integer getQty();
}

JpaReposytory:

* Запрос, который я использую проверено и работоспособен, я использую его в JpaRepository:

@Repository
public interface SmallVDTWRepository extends JpaRepository<VacancyDescriptionToWords, Long> {

@Query(nativeQuery = true,
        value = "SELECT sum(qty), words_id FROM vacancy_desc_to_words WHERE vacancy_description_id IN (" +
                "SELECT id FROM vacancy_description WHERE vacancy_id IN (" +
                "SELECT id FROM vacancy WHERE explorer_id = :exp))" +
                "GROUP BY words_id")
List<QtyWords> getDistinctWordsByExplorer(@Param("exp") long exp);
}

Но я получаю интересный результат, когда получаю список объектов:

    List<QtyWords> list = vdtwService.getByExplorerId(72);

Я не получаю никаких исключений, но у меня есть список с неизвестными объектами. Этот объект содержит мои данные, которые мне нужны (qty и words_id), но я не могу получить их от него.

 введите описание изображения здесь

Могу ли я использовать этот метод (Projection) для реализации этой задачи и, в общем, как правильно реализовать «Легкую сущность» в этом случае?

4 голоса | спросил Valentyn Hruzytskyi 18 72018vEurope/Moscow11bEurope/MoscowSun, 18 Nov 2018 16:34:58 +0300 2018, 16:34:58

1 ответ


0
Spring предоставляет два механизма, которые можно использовать для ограничения выборки данных.ПрогнозыПрогнозы могут помочь вам сократить объем данных, извлекаемых из базы данных, установив, какие именно атрибуты вы хотите получить.Пример:Граф сущностейАннотация ---- +: = 1 =: + ---- может помочь вам сократить количество запросов к базе данных, устанавливая, какие именно связанные объекты вам нужно выбрать.Пример:Есть два типа ---- +: = 3 =: + ---- :---- +: = 4 =: + ---- - используется для указания графа сущности, атрибуты, которые определены узлами атрибута графа сущности, обрабатываются как ---- +: = 5 =: + ---- и атрибуты, которые не указаны, обрабатываются в соответствии с указанным или заданным по умолчанию ---- +: = 6 =: + ---- .---- +: = 7 =: + ---- - используется для указания графа сущностей, атрибуты, которые определяются узлами атрибутов графа сущности, обрабатываются как ---- +: = 8 =: + ---- и атрибуты, которые не указаны, обрабатываются как ---- +: = 9 =: + ---- .PS: Также помните, что вы можете установить тип отложенной выборки: ---- +: = 10 =: + ----, и JPA не будет выбирать дочерние объекты, когда выбирается родительский.
ответил Aleksandr Semyannikov 18 72018vEurope/Moscow11bEurope/MoscowSun, 18 Nov 2018 17:29:26 +0300 2018, 17:29:26

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132