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);
添加回答
举报
