Прежде чем я объясню свою проблему, я хотел бы упомянуть, что ни один из ответов, связанных с этой проблемой, не работал для меня.Это может быть связано либо с тем, что фактический вопрос не был найден в поиске stackoverflow
, либо просто ответы не совсем относятся к моей проблеме.
Итак, я ищу, чтобы выбрать количество полей Xкогда я делаю findAll
, и я хочу сделать это, потому что сущность, к которой подключен репозиторий, имеет столбец соединения и по умолчанию JPA
запрашивает связанные данные из другой таблицы, поэтому я хочу получить результат моегозапрос должен быть компактным быстроseasons
записей.Таким образом, при выполнении запроса findAll
для seasons
вы можете ожидать, что JPA
также запросит series
и вставит свои данные в качестве подобъекта в seasons
в качестве результата.
seasons
сущность выглядит следующим образом:
package com.vod.cloudservice.entity;
import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.UpdateTimestamp;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.util.Date;
@Entity
@Table(name = "seasons")
public class Season {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@NotNull
@ManyToOne
@JoinColumn(name = "series_id")
private Series series;
@CreationTimestamp
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "create_time")
private Date createTime;
@UpdateTimestamp
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "update_time")
private Date updateTime;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "delete_time")
private Date deleteTime;
public Season() {
}
public Season(@NotNull String name, @NotNull Series series) {
this.name = name;
this.series = series;
}
/* Getters and Setters here */
}
И seasons
хранилище выглядит следующим образом:
package com.vod.cloudservice.repository;
import com.vod.cloudservice.entity.Season;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import java.util.List;
public interface SeasonRepository extends CrudRepository<Season, Long> {
@Query("SELECT id, name FROM Season")
List<Season> findAllSeasons();
}
Как видите, я хочу выбрать только id
и name
хотя бы пока.И когда я выполняю этот метод, Spring
выдает эту ошибку:
org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [java.lang.Long] to type [@org.springframework.data.jpa.repository.Query com.vod.cloudservice.entity.Season]
Я пытался изменить тип запроса, чтобы быть нативным, и адаптировать фактический запрос, чтобы быть запросом SQL
, но это все ещевыдает ту же ошибку, поэтому я не знаю, что делать в этом случае.
Примечание : я все еще учусь, как Spring
и JPA
с Hibernate
работает, поэтому я был бы очень признателен, если бы ответ мог дать объяснение того, почему предлагаемый ответ работает таким образом.