我是新的 Spring Boot 開發人員,我正在嘗試開發和休息 api。當我這樣做時,我得到并發出我的 api 在郵遞員中回傳兩個重復回應的問題。但是我沒有撰寫任何代碼來在我的代碼中獲取重復的值。重復值之一是我的模型類變數,另一個是表的屬性名稱。
以下是郵遞員的回應
模型類
public class person {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY )
private Long id;
@Column(name = "name")
private String Name ;
@Column(name ="surname")
private String Surname;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public String getSurname() {
return Surname;
}
public void setSurname(String surname) {
Surname = surname;
}
}
存盤庫
@Repository
public interface personRepository extends JpaRepository<person,Long> {
}
控制器
@RestController
@RequestMapping("/person")
public class personController {
@Autowired
private personRepository repository;
public personController(personRepository repository) {
this.repository = repository;
}
@GetMapping("/view/list/person")
private List<person> viewperson() {
return repository.findAll();
}
@PostMapping("/insert/person")
private person savePerson(@RequestBody person obj) {
return repository.save(obj);
}
@DeleteMapping("/delete/{id}")
private void delete(@PathVariable Long id) {
repository.deleteById(id);
}
}
應用程式屬性
spring.h2.console.enabled=true
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialec
噸
uj5u.com熱心網友回復:
問題是您沒有在命名策略中遵循正確的約定。
因此,杰克遜不知道您的吸氣劑 ( getSurname()
, getName()
) 正在參考欄位Surname
和Name
. 這就是為什么它將您的欄位和您的 getter 分別序列化為 JSON 的原因。
要解決此問題,您可以遵循 Java 命名約定并使用小寫字母作為欄位的第一個字符。
例如:
@Column(name = "name")
private String name; // Change this
@Column(name ="surname")
private String surname; // Change this
這會將您的 JSON 輸出更改為:
{
"id": 1,
"name": "bryan",
"surname": "Nicky"
}
如果你想用大寫字母保留你的 JSON,你可以使用@JsonProperty
注解:
@JsonProperty("Name") // Add this
@Column(name = "name")
private String name;
@JsonProperty("Surname") // Add this
@Column(name ="surname")
private String surname;
與您的問題無關,但根據這些命名約定,您的課程應以大寫字母開頭(例如,,,,Person
... PersonController
)PersonRepository
。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/470522.html
上一篇:您使用的是過時的Java(11)版本。需要Java17或更高版本
下一篇:無法通過Java更新SQL