【发布时间】:2014-12-20 07:40:43
【问题描述】:
这是我在这里的第一个问题,所以请不要太苛刻:)
在我的 spring-mvc 驱动的 REST 后端中,我创建了两个这样的实体:
@Entity
public class ObjectWithParameters implements Serializable {
private long id;
private String name;
private String description;
private String content;
@OneToMany(fetch = FetchType.EAGER, mappedBy = "service")
@JsonManagedReference
private Set<Parameter> parameters = new HashSet<Parameter>();
...
public Set<Parameter> getParameters() {
return parameters;
}
public void setParameters(Set<Parameter> parameters) {
this.parameters = parameters;
}
...
和
@Entity
public class Parameter implements Serializable {
private long id;
private String key;
private String value;
@ManyToOne
@JsonBackReference
private RestService service;
...
在 ObjectWithParameters-Entity 的 @RestController 中,我尝试创建一个 @RequestMapping,它采用 JSON,其中包含 ObjectWithParameters-Object 和 parameters -set 内部并从中创建相应的对象(然后通过 hibernate 将其保存到 mysql 数据库中)。
@RequestMapping(value = "/rest/object-with-parameters", method = RequestMethod.POST)
public void create(@RequestBody ObjectWithParameters objectWithParameters) {
for (Parameter param : objectWithParameters.getParameters()) {
log.debug("Param inside received ObjectWithParameters: {}", param);
}
...
}
For-Loop 只运行一次,如果我记录或保存(或其他)参数集只包含一个参数对象......即使 RequestBody 中的 JSON 看起来像这样(我用开发工具检查了这个)铬):
{
"id": 1,
"name": "testName",
"description": "testDescription",
"content": "testContent",
"parameters": [
{
"value": "foo",
"key": "bar"
},
{
"value": "foo2",
"key": "bar2"
},
{
"value": "foo3",
"key": "bar3"
}
]
}
在这种情况下,显示的 for 循环内的日志输出只会是
"01:54:52-800 [DEBUG] ParamInside received ObjectWithParameters: ServiceParameter [id=0, service=Service [id=1, name=testName, ....], key=bar, value=foo]"
我尝试了几件事,但没有运气... :( 有什么想法吗?
【问题讨论】:
-
也许参数 hashCode()/equals() 有什么需要修复的?
标签: java json rest spring-mvc post