我有兩個實體Person
和Visit
SpringBoot:這是保存具有ManyToOne關係的新條目的正確方法嗎?
Person
具有一對多與Visit
關係。 我想知道是否要保存Visit的新條目,以及使用RestController的中間代碼。我的方法是否正確?還是有另一種更有效率的方式?
所以我有以下控制器,從RequestBody需要一個VisitModel
,它是一個正確的方式來調用它是這樣嗎?
VisitModel具有person的ID和Visit實體所需的屬性。我使用人員的ID在personRepository中查找相關的Person條目,然後將其發佈到Visit的新實例,然後使用visitRepository進行保存。如下
@Entity
public class Visit {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
@JsonProperty("check_in")
private Date checkIn;
@JsonProperty("check_out")
private Date checkOut;
@ManyToOne
@JoinColumn(name="personId")
private Person person;
public Visit(Date checkIn, Person person) {
this.checkIn = checkIn;
this.person = person;
}
public Date getCheckIn() {
return checkIn;
}
public void setCheckIn(Date checkIn) {
this.checkIn = checkIn;
}
public Date getCheckOut() {
return checkOut;
}
public void setCheckOut(Date checkOut) {
this.checkOut = checkOut;
}
public Person getPerson() {
return person;
}
}
我想知道下面的方法是正確的
@RequestMapping(value="", method=RequestMethod.POST)
public String checkIn(@RequestBody VisitModel visit) {
Person person = personRepository.findById(visit.personId);
Visit newVisit = new Visit(visit.getCheckIn, person);
visitRepository.save(newVisit);
return "success";
}
的訪問實體外觀。還是有另一種更好的方法?
一個優化我可以看到的是,而不是使用存儲庫方法,你可以使用new運算符創建人對象並填充ID字段,並用它獲得人物對象。這將節省數據庫命中以獲取人員對象。 –
@MadhusudanaReddySunnapu你的意思是如下新人(personId);'? – starcorn
是的。你是否看到任何問題? –