【发布时间】:2017-11-13 19:01:29
【问题描述】:
我正在使用 Spring Data Rest。我在尝试发布具有关联的对象时遇到问题(例如,地址是我实体中的一个字段,它被映射为多对一)。
问题是,我们应该使用什么格式来连接我们的新实体和它的关系。我看到了几个答案并尝试了我找到的所有选项。不幸的是,它们都不适合我。 发生以下错误:
Caused by: org.h2.jdbc.JdbcSQLException: NULL not allowed for column "ADDRESS_ID"; SQL statement:
我尝试过的 JSON:
{
"name": "test",
"email": "test@email",
"address": "http://localhost:8080/MyApp/address/1"
}
也试过这些:
"address": {"id":"http://localhost:8080/MyApp/address/1"}
还有这个:
"address":{"id":1}
甚至这个:
"address": {
"href": "http://localhost:8080/MyApp/address/1"
}
有没有办法做到这一点,或者只为 POST 编写自己的控制器实现?谢谢!
【问题讨论】:
-
发布您的实体。
-
数据库中有哪些语句?您显然正在生成插入
-
是的,它是 POST 和 insert 语句。地址对象存在,我需要创建另一个实体的新对象,其中地址只是一个关联。
-
这里,apigility.org/documentation/api-primer/halprimer 我可以看到据说我们只需要使用 ID。但是API应该解决它。但是,它只是 HAL 本身。 Spring 可以采取不同的方式。
-
如果我发布到以 localhost:8080/MyApp/address/1/persons 开头的 URL,我不需要在请求中指定它并且它可以工作。然而,这并没有帮助。因为我想使用上面提供的端点。
标签: java spring hibernate spring-data-rest