我正在开发一个RESTful Web应用程序,其规格如下:
与表对应的JAVA类定义为:
class tableA {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@XmlTransient
private int col1A;
private string col2A;
// getters and setters
}
class tableB {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@XmlTransient
private int col1B;
@XmlTransient
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name = "col1A", referencedColumnName = "col1A", insertable = false, updatable = false)
private tableA tableAObj;
private string col2B;
// getters and setters
// There is a getter and setter for the col1A field as well.
}
使用libcurl,我将JSON对象发送到上面的Web应用程序。其中一个JSON对象(被发送以持久保存到tableB中)的格式为:
{
"col1A" : 1, // assume this is the correct value of col1A
"col2B" : "col2BVal",
}
在将上述JSON对象发送到Web应用程序时,我收到以下错误:
在libcurl方面(我在libcurl中启用了详细信息):
例外:N / A(通过参考链:com.package1.tableB [" col1A"])。客户端发送的请求在语法上是不正确的(org.codehaus.jackson.map.JsonMappingException:N / A(通过引用链:com.package1.tableB [" col1A"]))
在网络应用程序上:
执行POST /:org.jboss.resteasy.spi.ReaderException失败:org.codehaus.jackson.map.JsonMappingException:N / A(通过参考链:com.package1.tableB [" col1A" ])。
上面的Web应用程序异常出现在类tableB的col1A的setter中。
我删除了col1A的getter和setter(在类tableB中),然后再次使用libcurl发送了JSON对象,只是为了接收以下错误:
在libcurl方面:
HTTP状态400 - org.codehaus.jackson.map.exc.UnrecognizedPropertyException:无法识别的字段" col1A" (类com.package1.tableB),未标记为可忽略。
在网络应用程序上:
无法识别的字段" col1A" (类com.package1.tableB),未标记为可忽略。
如果有人可以提供帮助,谢谢。
修改
类tableB中col1A字段的getter和setter函数定义为:
public int getCol1A() {
return getTableA().getCol1A();
}
public void setCol1A(int Col1AVal) {
getTableA().setCol1A(Col1AVal);
}
其中getTableA()返回类tableB的tableAObj字段。
答案 0 :(得分:1)
我认为JSON应该是这样的:
{
"tableAObj" : {
"col1A" : 1, // assume this is the correct value of col1A
"col2A" : "value"
},
"col2B" : "col2BVal"
}
基本上,tableB的JSON应该有一个用于tableA的嵌套JSON。