问题标签 [spring-data-rest]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2559 浏览

java - Spring Data Rest 2.0.0.RELEASE Breaks Code Working Previously With RC1

I have a project which is utllizing Spring Data Rest. I originally had version 2.0.0.BUILD-SNAPSHOT in my pom.xml, but during my last update the code broke and began throwing the following IllegalStateException when accessing most endpoints:

Then the following error is logged by Spring Boot Actuate:

2014-02-28 07:58:54.986 ERROR 9232 --- [nio-8080-exec-6] o.s.b.actuate.web.BasicErrorController : org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: (was java.lang.NullPointerException) (through reference chain: org.springframework.hateoas.Resource["content"]); nested exception is com.fasterxml.jackson.databind.JsonMappingException: (was java.lang.NullPointerException) (through reference chain: org.springframework.hateoas.Resource["content"])

If I modify my pom.xml to use SDR version 2.0.0.RC1 then everything seems to work as expected.

I'd like to get this resolved since there are bug fixes included in the latest release which I have been waiting on, but this issue is preventing me from upgrading. Is there a workaround? It's difficult from the stacktrace to even tell where the issue is, but based on timing alone I think this issue may be related to this commit:

https://github.com/spring-projects/spring-data-rest/commit/3e5914d84f9708015b36a8840a25e9fa10a7f6ae

As requested the dependencies are:

spring-data-rest-webmvc 2.0.0.RELEASE

spring-boot-starter-web 1.0.0.BUILD-SNAPSHOT

spring-boot-starter-actuator 1.0.0.BUILD-SNAPSHOT

spring-boot-starter-security 1.0.0.BUILD-SNAPSHOT

spring-boot-starter-data-jpa 1.0.0.BUILD-SNAPSHOT

spring-boot-starter-shell-remote 1.0.0.BUILD-SNAPSHOT

spring-boot-starter-tomcat [provided]

spring-boot-starter-test 1.0.0.BUILD-SNAPSHOT

spring-security-ldap 3.2.0.RELEASE

It appeared that spring-boot-starter-jpa was providing an older version of spring-data-commons than spring-data-rest-webmvc, but reordering the dependencies to pull 1.7.0.RELASE instead of 1.7.0.RC1 doesn't seem to have had an effect.

0 投票
1 回答
2040 浏览

spring - Spring Data Rest 2.1.0 无法 POST 或 PUT 复杂资源

编辑:这似乎也发生在 PUT 上。

使用 spring-data-rest-webmvc 版本 2.1.0.BUILD-SNAPSHOT 我发现我无法发布具有指向现有资源的关系的资源。我有 2 个这样的实体,它们需要实例化引用并发布到它们的任何一个端点都会导致以下行为。

在没有必需引用的情况下发布资源效果很好。

我做了一些挖掘,似乎PersistentEntityResourceHandlerMethodArgumentResolver发现很好,但最终在检查是否可以反序列化类型MappingJackson2HttpMessageConverter时抛出异常。ObjectMapper异常的原因是NullPointerException.

与 /reservations 有关系的示例 POST:

{ "description" : "test_post", "dateMade" : "2014-03-03T08:04:44.293-0600", "timeLastChanged" : null, "userLastChanged" : null, "courseTypeId" : null, "numCredits" : null, "instructor" : null, "numParticipants" : null, "reservationType" : "MCU", "status" : "REQUESTED", "abstract" : null, "requestor" : "http://localhost:8080/users/2", "submitter" : "http://localhost:8080/users/2", "conferences" : [] }

回复:

{ cause: null message: "No suitable HttpMessageConverter found to read request body into object of type class domain.Reservation from request with content type of application/json!" }

POST 与 /roomGroups 没有关系:

{ "description" : "All Rooms", "isOffNetwork" : false, "roomGroupType" : "STANDARD" }

回复:

201 Created

我发布的 JSON 是否有问题导致 NPE 来自ObjectMapper?有某种解决方法吗?这在 2.0.0.RC1 中为我工作,使用稍微不同的方案在 JSON 中包含参考链接,并且由于杰克逊依赖项的版本似乎保持不变,我想知道是什么导致了这个问题......

谢谢你的帮助!

更新:

这个问题现在似乎与关联实体无关......

我创建了一个新的@EntityConnectionRequest 如下:

我可以发布一条新的 ConnectionRequest 记录,其中包含 json 中包含的会议关系{"conference" : ".../conferences/1"}

@Entity然而,我仍然得到与此预订相同的异常:

我不确定这门课有什么特别之处导致事情出错......

0 投票
4 回答
8607 浏览

json - 带有 AngularJS 前端的 SPRING-DATA-REST 后端

是否有任何前端应用程序示例使用用 angularJS 编写的 Spring-data-rest 后端的 RESTful 服务。

0 投票
1 回答
1069 浏览

spring - spring-data-rest-webmvc 2.0.0 - 缺少 RepositoryRestExporterServlet

我正在尝试使用 spring-data-rest-webmvc 2.0.0 创建一个 REST Web 服务。我正在关注使用 1.0.0 版的手册“Spring in Practice”。在本手册中,它在 web.xml 中定义了 exporter servlet,如下所示:

在 2.0.0 版中,我找不到 RepositoryRestExporterServlet 类。我应该使用什么调度程序 servlet?我在哪里可以得到一些例子?谢谢

0 投票
3 回答
1015 浏览

spring-data-rest - Spring Data Rest Jpa 插入 @Lob 字段

我有一个弹簧数据休息服务,它公开了一个资源,如:

json应该如何插入这种类型的资源?

0 投票
3 回答
4539 浏览

swagger - 使用 Spring-Data-Rest 招摇

有没有人用 spring-data-rest 配置招摇。我知道 swagger 有 DocumentationConfig 类,它扫描所有 spring-mvc 请求映射。但是,如何将它用于 spring-data-rest,因为没有定义明确的请求映射。非常感谢这方面的任何帮助。另外,想知道是否有任何其他支持 Spring-Data-Rest 的文档框架。

0 投票
1 回答
6219 浏览

java - Spring Data Rest 多对多 POST

首先,让我解释一下我的用例。这很简单。有一个用户实体和一个服务实体。我使用 UserService 作为联接实体(联接表)在用户和服务之间建立了多对多关联。最初,会有一些用户集和一些服务集。用户可以在任何时间点订阅任何服务。在这种情况下,将向 UserService 添加一个条目。但是,当我尝试创建新的 UserService 关联时,出现空指针异常。我可以单独创建用户和服务。

我的实体是:User.java

服务实体

最后是连接实体

用户服务.java

现在我的问题是,GET 请求工作正常,但是,当我尝试创建新的 UserService 时出现空指针异常。

POST:http://localhost:8080/em/api/userServices/ 我正在尝试将用户 1 与服务 2 请求关联:

错误消息:

GET http://localhost:8080/em/api/userServices产生以下输出:

有没有人使用 Spring-data-rest 成功实现了 ManyToMany 关联。如果是这样,请在这方面帮助我

0 投票
2 回答
2598 浏览

json - Spring Data Rest 模糊关联异常

由于我的域类中的关联不明确,新添加LinkCollectingAssociationHandler的内容会抛出一个。MappingException

链接数组如下所示:

[<http://localhost:8080/rooms/2/roomGroups>;rel="roomGroups", <http://localhost:8080/rooms/2/userGroup>;rel="userGroup", <http://localhost:8080/rooms/2/room>;rel="room", <http://localhost:8080/rooms/2/originatingConferences>;rel="originatingConferences", <http://localhost:8080/rooms/2/user>;rel="user"]

当它抛出异常时,它正试图添加另一个“房间”关系。

问题是它似乎正在添加指向我已明确标记的关系的链接@RestResource(exported = false)

这是我认为导致此问题的关系示例:

该类型有一个由 a和 aRoomsByUserAccessView组成的嵌入 id 。RoomUser

我还注释了嵌入的 id 属性:

及其属性如下:

在序列化为 JSON 时,如何让它正确地忽略这些关系?

我的代码在 DATAREST-262 之前工作(https://github.com/spring-projects/spring-data-rest/commit/1d53e84cae3d09b09c4b5a9a4caf438701527550

当我尝试访问 rooms/ 端点时返回的完整错误消息如下:

{ timestamp: "2014-03-17T13:38:05.481-0500" error: "Internal Server Error" status: 500 exception: "org.springframework.http.converter.HttpMessageNotWritableException" message: "Could not write JSON: Detected multiple association links with same relation type! Disambiguate association @com.fasterxml.jackson.annotation.JsonIgnore(value=true) @javax.persistence.ManyToOne(fetch=EAGER, cascade=[], optional=true, targetEntity=void) @org.springframework.data.rest.core.annotation.RestResource(description=@org.springframework.data.rest.core.annotation.Description(value=), path=, exported=false, rel=) private com.renovo.schedulerapi.domain.Room com.renovo.schedulerapi.domain.RoomsByUserAccessViewId.room using @RestResource! (through reference chain: org.springframework.hateoas.PagedResources["content"]->java.util.UnmodifiableCollection[0]); nested exception is com.fasterxml.jackson.databind.JsonMappingException: Detected multiple association links with same relation type! Disambiguate association @com.fasterxml.jackson.annotation.JsonIgnore(value=true) @javax.persistence.ManyToOne(fetch=EAGER, cascade=[], optional=true, targetEntity=void) @org.springframework.data.rest.core.annotation.RestResource(description=@org.springframework.data.rest.core.annotation.Description(value=), path=, exported=false, rel=) private com.renovo.schedulerapi.domain.Room com.renovo.schedulerapi.domain.RoomsByUserAccessViewId.room using @RestResource! (through reference chain: org.springframework.hateoas.PagedResources["content"]->java.util.UnmodifiableCollection[0])" }

0 投票
3 回答
5544 浏览

spring-data-rest - Spring data REST:使用适当的 HTTP 方法更新资源的关联

我正在使用 Spring Data REST,我正在尝试使用 Spring REST 更改多对一关系,但我无法获得正确的 http 调用。

我的实体看起来像这样(使用 POST 等创建的基本调用可以正常工作):

我想将 ID 1 的当前时间定义更改为 ID 2。

我尝试了很多不同的调用类型,但有不同的错误。下面的调用不起作用。

收到以下错误:

无法从类型 java.lang.String 转换为类型 domain.TimeDefinition for value '0';嵌套异常是 java.lang.IllegalArgumentException:为类 domain.TimeDefinition 提供了错误类型的 id。预期:类 java.lang.Integer,得到类 java.lang.Long

另一个例子是这样的:

我得到的错误是:

"message":"必须只发送 1 个链接来更新不是 List 或 Map 的属性引用。"

不幸的是, http: //docs.spring.io/spring-data/rest/docs/2.0.1.RELEASE/reference/html/ 上的主要参考资料没有提供关于上述主题的太多信息。

非常感谢有关更新实体关联的正确 REST 查询格式的任何见解和解释!

0 投票
4 回答
6349 浏览

jackson - 在 Spring Data Rest 中使用自定义 json 序列化程序时的不同 JSON 输出

Jackson根据官方文档添加自定义序列化程序后,我观察到 json 输出格式略有不同。

此示例基于spring-restbucks

扩展org.springsource.restbucks.WebConfigurationRepositoryRestMvcConfiguration覆盖configureJacksonObjectMapper

创建类org.springsource.restbucks.order.OrderSerializer。为简洁起见,只需将属性写paid为 JSON。

在添加 OrderSerializer json 响应之前,http://localhost:8080/orders/1如下所示:

添加 OrderSerializer json 响应后http://localhost:8080/orders/1看起来像

主要问题是属性paid 被包装到另一个对象内容中,该对象内容是org.springframework.hateoas.Resource的一个属性。我期望没有此属性的响应:

我查看了 Jackson 代码,发现UnwrappingBeanSerializer可能是我正在寻找的解决方案。在查看了如何初始化 UnwrappingBeanSerializer 之后,我认为这个序列化器不应该被子类化以供自定义使用。

我想知道使用自定义序列化程序时这种偏离的 json 格式是正常行为还是 Spring Data Rest 中的错误。任何形式的帮助表示赞赏。