Как выбрать поля в данных весны?

120
17

У меня есть сущность, как следует.

@Entity
@Table(name = "BankProduct")
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

private String name;

@ManyToOne
private ProductUseType type;

public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

@ManyToOne
private ProductSerial serial;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public ProductUseType getType() {
return type;
}

public void setType(ProductUseType type) {
this.type = type;
}

public ProductSerial getSerial() {
return serial;
}

public void setSerial(ProductSerial serial) {
this.serial = serial;
}
}

Мой контроллер:

@RestController
public class DEmoController {

@Autowired
private ProductRepository productRepository;

@GetMapping("/products")
public Returns products() {
return new Returns(ReturnStatus.SUCCESS.getStatus(), productRepository.findAll(), null);
}
}

Он будет загружать как тип, так и серийный продукт. Могу ли я загружать только тип, но не загружать серийный номер?
Я не хочу добавлять fetch=FetchType.LAZY к серийному, потому что если в следующий раз я хочу загрузить серийный, но не загружать тип, это будет ужасно.

спросил(а) 2021-01-19T19:27:36+03:00 6 месяцев, 2 недели назад
1
Решение
134

Проверьте интерфейс Projection

Создание интерфейса ProductProjection

interface ProductProjection {
String getName();
String getType();
}

и добавьте метод в Repository

List<ProductProjection> findAllProjection()

ответил(а) 2021-01-19T19:27:36+03:00 6 месяцев, 2 недели назад
45

То, что весь пункт fetch=FetchType.LAZY. Он не загрузит ни один из ваших типов/полей, пока вы не попросите их явно.


Взгляните на этот вопрос: Ссылка

ответил(а) 2021-01-19T19:27:36+03:00 6 месяцев, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема