gpt4 book ai didi

java - 如何在Spring中定义表单来持久化复杂对象?

转载 作者:太空宇宙 更新时间:2023-11-04 14:16:49 25 4
gpt4 key购买 nike

我需要定义一个 from 来创建我的一个对象的实例。这是一项简单的任务,我已经有了一些任务,但是这个特定对象具有对我必须在表单中定义的其他对象的引用。如何才能做到这一点?我知道我可以要求用户输入 de id,将其存储在 DTO 中并稍后获取真实对象,但我认为这不是实现此目的的最佳方法。我能做什么?

我把我的实体放在这里:

@Entity
public class Route {

@Id
@GeneratedValue
private Long id;

@Column(nullable = false)
private Long distance;

@Column(nullable = false)
private String name;

private String description;

@ManyToOne
@JoinColumn
private Place origin;

}

这是引用对象:

@Entity
public class Place {

@Id
@GeneratedValue
private Long id;

@Column(nullable = false)
private String name;

private Long latitude;

private Long longitude;

private String imagePath;

@OneToMany(mappedBy = "origin", cascade = CascadeType.REMOVE)
private Set<Route> originRoutes;

}

最佳答案

这实际上更详细地取决于用例是什么。让我们考虑几种可能性:

立即创建一个地点以及一些路由 - 在本例中,我将实现 View ,以便它创建一个一对一反射(reflect)实体的复杂结构,就像为 JPA 定义它们一样,并传入单个 POST 请求。我们基本上假设总是与地点一起创建的路线数量有限。 路线不能在不同地点之间共享,因为它没有意义。

@RequestMapping(method = POST, value = "/places")
public CreatePlaceResponse createPlace(@RequestBody Place place) {
...
}

创建一个地点并在后续请求中提供路线 - 如果我们想要更大的灵 active 和/或预计分配给每个地点的路线数量会很大,我们可以首先创建地点,然后使用另一个请求为其分配路线(通过引用地点ID)。通过这种方式,您可以让用户逐步创建整个结构,并且您可以稍后添加路线

@RequestMapping(method = POST, value = "/places")
public CreatePlaceResponse createPlace(@RequestBody Place place) {
...
}

@RequestMapping(method = POST, value = "/places/{placeId}")
public AddRouteResponse addRoute(@RequestBody Route route) {
...
}

根据情况,您还可以考虑批量创建路线,因此将路线列表传递到已创建的位置。

关于java - 如何在Spring中定义表单来持久化复杂对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27622236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com