【发布时间】:2021-11-17 09:33:56
【问题描述】:
场景:
我在 MySQL 服务器上有 3 个表与 @ManyToMany 交互,一切正常,但我需要检索另一列而不是 @ManyToMany 注释上命名的列,例如:
Midias
|
|_ midiasId
|
|...
|@ManyToMany...
|_ veiculos
Veiculos
|
|_ veiculosId
|
|...
|
|@ManyToMany
|- midias
|...
|
|- bonus <- I like this variable here fetched from MidiaVeiculos table and attached to Veiculos entity*
MidiaVeiculos
|
|- midiaCodigo
|- veiculoCodigo
|- bonus
我不知道我的代码是否正常,但我相信还有其他更有效的方法,例如:
veiculos.getBonus();
我的代码:
private List<MidiaResponseBonus> listarMidiasPorFiltros(BuscarMidiaRequest request) {
List<MidiaModel> midias = this.mRepository.findAll(request.listarMidiasPorFiltros());
List<MidiaResponseBonus> mb = midias.stream()
.map(m -> {
List<VeiculoResponseComBonus> veiculos = m.getVeiculos().stream().map(v -> new VeiculoResponseComBonus(
v.getCodigo(),
v.getNumeroOrdem(),
v.getAnoFabricacao(),
v.getEmpresa(),
v.getRota(),
v.getOperacional(),
this.mvRepository.findByMidiaCodigoAndVeiculoCodigo(m.getCodigo(), v.getCodigo()).getBonus()
)).collect(Collectors.toList());
veiculos.forEach(v -> System.out.println(v.getBonus()));
return new MidiaResponseBonus(
m.getCodigo(),
m.getCliente(),
m.getCampanha(),
m.getProduto(),
m.getPedidoInsercao(),
m.getPedidoProducao(),
m.getInicioPeriodo(),
m.getTerminoPeriodo(),
m.getInicioFotos(),
m.getTerminoFotos(),
veiculos
);
}).collect(Collectors.toList());
return mb;
}
我需要检索 midiaVeiculos 表上的奖励列
我可以用@ManyToOne 和@OneToMany 解决问题吗? 谢谢!
【问题讨论】:
标签: java spring spring-data many-to-many