我應該如何回傳我的表讀取 API 請求的主鍵而不需要我的表寫入 API 請求的主鍵?他們使用相同的物件。
我有一個 Person 類和兩個控制器函式。
public class Person {
private Integer id; // this is the primary key in my table
private String name;
private Integer houseId;
private Integer age;
}
@RestController
public class TestController {
@RequestMapping("/")
public List<Person> fetchAll() { // this function does a "SELECT *" on all rows
return personDao.findAll();
}
@PostMapping(value = "/createPerson")
public void createPerson(@RequestBody Person person) { // this function does an "INSERT"
personDao.insertPerson(person);
}
}
我不想在我的所有“createPerson”API 請求上都要求表主鍵(類屬性“id”),因為客戶端不會知道它。我想跳過那個值,讓表在插入時增加 PK。
但是,我想在“fetchAll”API 請求中回傳“id”。我希望它在 Person 物件上定義。
除了制作“id”可選型別或定義兩個單獨的物件:“PersonRequest”和“PersonResponse”之外,我看不到這樣做的方法,它們都將擴展“Person”類。兩者似乎都是不好的做法
有什么我想念的嗎?
uj5u.com熱心網友回復:
既然您說您希望 id 自動遞增,請確保將以下注釋添加到您的 id 欄位:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
沒有什么可以阻止您保存沒有 id 的物件,即使它具有屬性 id。如果你這樣做:
Person person = new Person(); //person is empty here
person = personRepository.save(person);
分配給 person 的回傳值將有一個 id。此外,當您執行時:
Person person = personRepository.findById(id);
person 物件將具有 id,我不確定還有什么讓您感到困惑。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/489512.html
