Как кастовать list entity в инетерфейс?
Подскажите пожалуйста как преобразовать коллекцию:
Несколько entity хочу объединить при поищи интерфейса EntityUnion
public interface EntityUnion {
}
Есть entity:
@Entity
@Table(name = "advantageous_tickets")
public class Table implements EntityUnion {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
Репозиторий для извлечения entity Table
public interface TableRepository extends CrudRepository<Table, Long> {
}
Далее Dto
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class DTo {
private Iterable<EntityUnion> entityUnion;
}
У нас есть какой-то сервис
Iterable<Table> table = tableRepository.findAll();
Dto.builder()
.entityUnion(???)
.build()
Как table добавить в entityUnion ?
Ответы (1 шт):
Автор решения: tequillaz
→ Ссылка
В Java обобщенные типы инвариантны. Перед тем, как добавить Iterable<Table> table в dto, необходимо привести шаблонный тип, например, так:
List<EntityUnion> table = tableRepository
.findAll()
.stream()
.map(t -> (EntityUnion)t)
.collect(Collectors.toList());