gpt4 book ai didi

java - Spring Data REST - POST 方法未调用 RepositoryEventHandler 方法?

转载 作者:太空宇宙 更新时间:2023-11-04 11:25:57 25 4
gpt4 key购买 nike

我定义了以下域对象和 DTO。

Country.java

@Data
@Entity
public class Country extends ResourceSupport {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long countryID;

@NotBlank(message = "Country name is a required field")
private String countryName;

private String countryNationality;
}

CountryDTO.java

@Data

public class CountryDTO {

private List<Country> countries;
}

我已经重写了国家/地区类的 RepositoryRestController 中的 POST 方法。

@RepositoryRestController
public class CountryController {

@Autowired
private CountryRepository repo;

@RequestMapping(method = POST, value = "countries")
public @ResponseBody ResponseEntity<?> createCountry(@RequestBody Resource<CountryDTO> dto,
Pageable page, PersistentEntityResourceAssembler resourceAssembler) {

Country savedCountry = repo.save(dto.getContent().getCountries());
return new ResponseEntity<>(resourceAssembler.toResource(savedCountry), HttpStatus.OK);
}


}

现在我已经定义了一个 RepositoryEventHandler 来处理验证。

@Component
@RepositoryEventHandler
public class CountryHandler {


@HandleBeforeCreate
public void handleBeforeCreate(Country country) {

System.out.println("testing");

}

但是当我向端点 http://localhost:8080/countries 发送 POST 请求时,事件处理程序不会被调用。我是不是做错了什么?

更新1:我使用 Postman 将以下 JSON 发送到端点。

"countries":[{
"countryName":"Australia",
"countryNationality":"Australian"

}]

最佳答案

如果不知道您如何调用请求,则很难为您提供准确的解决方案。但可能的原因是您缺少斜杠符号 @RequestMapping value 属性:

@RequestMapping(method = POST, value = "countries")

应该是:

@RequestMapping(method = POST, value = "/countries")

关于java - Spring Data REST - POST 方法未调用 RepositoryEventHandler 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44369093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com