Иметь класс "полный Сущность":
@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/spring-data/jpa/docs/2.1.2.RELEASE/reference/html/#projections
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
) для реализации этой задачи и, в общем, как правильно реализовать «Легкую сущность» в этом случае?