Так что я большую часть времени пользуюсь Spring Data Repositories. Но я достиг варианта использования, где я не могу использовать свой репозиторий Spring для извлечения сущности, которую мне нужно вернуть клиенту. Итак, у меня есть мой класс ResourceEntity
, который является объектом данных Spring. И я хотел бы вернуть эту сущность как ResourceProjection
интерфейс.
@Getter
@Setter
@NoArgsConstructor
@Entity
public class ResourceEntity{
private Long id;
private String name;
private String anotherFieldThatIsNotInTheProjection;
}
public interface ResourceProjection {
Long getId();
String getName();
}
Обычно с помощью репозитория Spring я бы определил что-то вроде этого:
public interface ResourceRepository extends PagingAndSortingRepository<ResourceEntity, Long> {
Optional<ResourceProjection> getById(Long id);
}
В этом В этом случае я не могу использовать «automati c proxy», сгенерированный Spring Data, для автоматической реализации моей проекции с данными объекта.
Итак, мой вопрос: есть ли способ «вручную» преобразовать сущность в проекцию?
Еще одно решение, о котором я подумал, - вернуть сущность и использовать аннотации Джексона, такие как @JsonIgnore, для предотвращения некоторые из моих данных должны быть возвращены, но это не является оптимальным способом написания моего кода.
В противном случае я всегда могу создать класс DTO, который будет заполняться данными из сущности. Но так как я уже создал свою проекцию для других целей, я бы хотел избежать создания второго "DTO".