Spring boot один ко многим присоединяется Получение повторяется json из БД - PullRequest
0 голосов
/ 12 апреля 2020

Product. java

@Entity @Table(name="product") public class Product {
          // ...
          @ManyToOne @JoinColumn(name="product_id")
          private Brand brand;
          // getters and setters
}

Brand. java

@Entity @Table(name="brand") public class Brand {
          // ....
          @OneToMany(mappedBy="brand", cascade = CascadeType.ALL)
          private Set<Product> products;
}

BrandRepository. java

@Repository public interface BrandRepository extends JpaRepository<Brand, Long>{}

BrandController. java

@RestController @RequestMapping("/api/v1")
public class BrandController {
          @Autowired private BrandRepository brandRepository;

          @GetMapping("/brands")
          public List<Brand> getAllBrands(){
                    return brandRepository.findAll();
          }
          @GetMapping("/brand/{id}")
          public ResponseEntity<Brand> getBrand(@PathVariable(value="id") Long bid) throws ResourceNotFoundException {
                    Brand brand = brandRepository.findById(bid).orElseThrow(() -> new ResourceNotFoundException("user not found"+bid));
                    return ResponseEntity.ok().body(brand);
          }
}

всякий раз, когда я пытаюсь получить доступ к / брендам или / бренду / 1, я получаю повторяющиеся json результаты, подобные этим:

для "http://127.0.0.1: 8080 / api / v1 / brands"

[{"id":1,"name":"Apple","products":[{"id":4,"name":"Apple kndsksk ksjdsoijd sd","price":"2893787","brand":{"id":1,"name":"Apple","products":[{"id":4,"name":"Apple kndsksk ksjdsoijd sd","price":"2893787","brand":{"id":1,"name":"Apple","products":[{"id":4,"name":"Apple kndsksk ksjdsoijd sd","price":"2893787","brand":{"id":1,"name":"Apple","products":[{"id":4,"name":"Apple 
... and continues

для" http://127.0.0.1: 8080 / api / v1 / brand / 1"

{"id":1,"name":"Apple","products":[{"id":1,"name":"Apple kksf sfok sokoak","price":"9239932","brand":{"id":1,"name":"Apple","products":[{"id":1,"name":"Apple kksf sfok sokoak","price":"9239932","brand":{"id":1,"name":"Apple","products":[{"id":1,"name":"Apple kksf sfok sokoak","price":"9239932","brand":{"id":1,"name":"Apple","products":[{"id":1,"name":"Apple kksf sfok sokoak","price":"9239932","brand":{"id":1,"name":"Apple","products":[{"id":1,"name":"Apple kksf sfok sokoak","price":"9239932","brand":{"id":1,"name":"Apple","products":[{"id":1,"name":"Apple kks 
... and continues

1 Ответ

0 голосов
/ 12 апреля 2020

Вы можете использовать аннотацию @JsonIgnore для подавления этой бесконечной l oop. Например:

@JsonIgnore
@ManyToOne @JoinColumn(name="product_id")
private Brand brand;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...