产品.java
@Entity @Table(name="product") public class Product {
// ...
@ManyToOne @JoinColumn(name="product_id")
private Brand brand;
// getters and setters
}
品牌.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);
}
}
每当我尝试访问/brands 或/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
最佳答案
您可以使用@JsonIgnore注释来抑制这种无限循环。例如:
@JsonIgnore
@ManyToOne @JoinColumn(name="product_id")
private Brand brand;
关于java - Spring boot一对多连接从数据库获取重复的json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61173816/