3 回答

TA貢獻1807條經驗 獲得超9個贊
沒有辦法告訴代碼Person
它需要與您的新Movie
. 因此,您確實需要執行查詢并手動進行關聯。
只有當您的端點Person
在創建Movie
. 然后您可以簡單地執行 2 個保存操作或使用 aCascadeType=ALL
進行單個保存操作。
如果您能夠更改請求參數,那么接收完整Person
對象而不是接受directorId
. 這樣你就可以建立關聯movie.director = director;
。
小心這種類似的方法:如果接收到的Person
對象沒有存儲在您的數據庫中,您將收到一個異常。
也許您可以為您的Directors
. 例如,如果您將所有 Director 都保存在 Redis 中,則可以搜索Director
與接收到的對應directorId
的然后執行關聯。
當然,您仍然需要進行第二次操作,但它可能比查詢數據庫便宜得多。

TA貢獻1788條經驗 獲得超4個贊
這會很丑,但你的請求中有 personId,所以你可以用你的長 personId 映射你的電影
class Movie {
@Id Long id;
@Column String name;
@ManyToOne Person director;
@Column(name="PERSON_ID")
long personId;
}
在你的控制器中
movie.setPersonId(request.directorId);
添加回答
舉報