I need to show sql result
in a JSON like this
{
slpcode: 700,
businesspartnerparamid:{181,
195,
197,
362,
376
}
}
in a spring boot app.
Class
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import javax.persistence.*;
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name="businesspartnerparamsalesperson")
public class Vendedor {
@Id
@Column(name="businesspartnerparamid", nullable = false)
private Long businessPartnerParamID;
@Column(name="Slpcode",nullable = false)
private Long slpCode;
public Long getBusinessPartnerParamID() {
return businessPartnerParamID;
}
public void setBusinessPartnerParamID(Long businessPartnerParamID) {
this.businessPartnerParamID = businessPartnerParamID;
}
public Long getSlpCode() {
return slpCode;
}
public void setSlpCode(Long slpCode) {
slpCode = slpCode;
}
}
Repo
Repository
public interface VendedorRepository extends JpaRepository<Vendedor, Long> {
Optional<Vendedor> findVendedorBySlpCode (Long slpCode);
}
Service
@Service
@AllArgsConstructor
public class ApiService {
@Autowired
private final VendedorRepository vendedorRepository;
@Autowired
private final ClienteRepository clienteRepository;
public Optional<Vendedor> findVendedorByCode (Long slpCode) {
Optional<Vendedor> vendedor = vendedorRepository.findVendedorBySlpCode(slpCode);
return vendedor;
}
public Optional<Cliente> findClienteByCode (String code){
Optional<Cliente> cliente = clienteRepository.findClienteByCardCode(code);
return cliente;
}
}
Controller
@CrossOrigin
@RestController
@EnableAutoConfiguration
@RequestMapping("/vendedor")
@AllArgsConstructor
public class ApiController {
@Autowired
private ApiService apiService;
@GetMapping(value="/{slpCode}", produces = MediaType.APPLICATION_JSON_VALUE)
public Optional<Vendedor> findVendedorBySlpCode (@PathVariable Long slpCode){
return apiService.findVendedorByCode(slpCode);
}
}
I'm getting this message on log:
query did not return a unique result: 94; nested exception is >javax.persistence.NonUniqueResultException: query did not return a unique result: 94
After that, I wanna delete/update all of salesperson associated id's (transfer clients (id's) from one to another .
CodePudding user response:
The javax.persistence.NonUniqueResultException
indicates that there is more than one result from the query. Looking at your data, indeed, you have more than one row where the slpCode
is 700
.
You have to change the return type to List of Vendedor
:
List<Vendedor> findVendedorBySlpCode (Long slpCode);
If no vendors are found an empty list will be returned.