问题标签 [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 投票
3 回答
7178 浏览

java - 如何更新 Spring-data rest 中的引用对象?

示例:类 Course 和 Teacher 具有多对一关系,如何通过 Spring-data rest 为某门课程更换教师?

回复:

回复:

如上所示,课程 2 与教师 1 关联,如何将教师更改为教师 2?

我试过了:

成功更新课程名称:

PUT http://localhost:7070/study-spring-data/course/2 带有效载荷

尝试更新参考对象教师时失败:

带有效载荷

谢谢!

0 投票
1 回答
662 浏览

spring-data-rest - 直接在客户端使用 Spring-Data-Rest 存储库?

我使用 Spring-Data-Rest 创建了模型对象并以 REST 样式公开,我是否可以通过客户端(前端)的各个端点直接使用它?

或者我需要创建 Spring MVC 控制器,它再次从 DAO 层获取数据并在客户端(前端)使用它?

0 投票
3 回答
1341 浏览

java - Spring Data REST - 无法延迟加载集合

我刚刚开始在我们的 Spring MVC 应用程序中使用 Spring Data REST,以减少为我们的 API 提供 REST HATEOAS 支持所需的工作。

这对顶级实体几乎立即起作用——我们可以返回所有项目、PUT/POST 新项目或按 ID 返回特定项目。

我现在遇到的问题是当尝试按照提供的链接显示映射到我返回的实体的集合时。

我有一个“org.hibernate.LazyInitializationException: no Session”被抛出 - 我假设它会将父对象遍历到集合中(这是延迟加载的)。

谷歌搜索该问题建议启用 OpenEntityManagerInViewFilter - 但是我们不愿意为我们的项目启用此功能,因为我们之前有过糟糕的经历,这会导致数据库连接死锁。

任何人都可以提供关于我可能缺少的配置选项的提示,或者我在文档中缺少的内容,以便让这些链接正确导航集合。

问候,

安迪

0 投票
1 回答
3375 浏览

caching - Spring Data Rest - 缓存

如何使用 Spring Data Rest 启用缓存?

背后的原因是,一旦应用程序启动,存储库列表和搜索方法就不会改变。此外,如果仅通过 REST API 更改了 REST API 背后的数据,它确实也可以启用缓存数据。

我相信在某种程度上缓存发生在 REST API 框架中,如果缓存发生在最终响应阶段,即 json 响应(以避免将对象编组到 json 的开销),那将是理想的

想法/评论?

0 投票
0 回答
955 浏览

java - Spring Data Rest 不更新外键

所以,我有两个实体:

所以我的 Orders 表看起来像这样(不是真的,但你明白了):

现在,当我PUTOrders资源执行 a 时,我可以整天更改数量。但是任何试图改变product_id结果的尝试都是徒劳的。我的映射应该是正确的,因为我可以查询订单然后引用产品。

但作为参考,我的映射如下:

知道我错过了什么吗?

哦,使用SQL Server 2008,spring-data-rest-webmvc 1.0.0-RELEASE,spring-data-jpa

谢谢。

0 投票
1 回答
3044 浏览

spring - Spring Data REST 是否支持 JPA @Version?

我可以将 JPA@Version与 Spring Data REST 一起使用吗?

在 Spring Data REST 1.1.0.M1 中,我可以配置 repo 导出器以公开实体 ID,碰巧它也会公开@Version-annotated 字段。所以我想如果我尝试PUT使用一些旧版本号的实体,我会得到OptimisticLockException. 但这不会发生。相反,PUT成功(包括数据更新),除了版本号总是严格递增而不是我设置的任何旧版本。

我在这里读到我不应该自己设置版本号,因为行为是未定义的。那讲得通。但是,在我所拥有的只是实体的 JSON 表示而不是对实体的引用的情况下,这似乎@Version毫无用处:使用 JSON 表示,我需要将版本号发送回服务,这最终会call setVersion(),这反过来会导致未定义的行为。

我是否正确理解了情况?我可以@Version与 Spring Data REST 一起使用吗?

更新:鉴于 Marten 的响应,我最终使用 JPA 事件来实现乐观锁定功能。我在这里写了方法:

http://springinpractice.com/2013/09/14/optimistic-locking-with-spring-data-rest/

0 投票
1 回答
27865 浏览

spring - Spring Data REST 中的身份验证和授权

我正在实现一个基于Spring Data REST的应用程序,我想知道是否有一种优雅的方式来使用这个框架或相关框架来实现身份验证和授权规则。

对 REST 服务器的所有 HTTP 请求都必须携带身份验证标头,我需要检查它们并根据 HTTP 方法以及经过身份验证的用户与所请求资源的关联来决定是否授权。例如,(应用程序是电子学习系统的 REST 服务器),教师只能访问他们自己的课程部分,学生只能访问他们订阅的课程部分等。

我想知道是否有默认方式在 Spring Data REST 中实现授权。如果答案是否定的,您能对我的问题提出建议吗?我在想:

  • Servlet 过滤器
  • 春季安全
  • Spring Data REST 处理程序(如何访问 HTTP 标头?)
0 投票
2 回答
2128 浏览

spring-data-jpa - Spring Data REST:添加实体关系时静默失败

各位 Spring Data REST 爱好者,我正在运行我的 Spring Data REST 1.1 应用程序,我正在尝试使用 curl 添加使用“text/uri-list”内容类型的实体关系,如链接中所述:Example-API-与卷曲一起使用

不幸的是,虽然服务器返回“201 Created”,但主体包含一个空的 JSON 对象,并且实体关系没有被创建:

我希望看到正在执行 SQL UPDATE,但分析 SQL 显示只有 SELECT 语句发生:

有趣的是,如果我通过在数据库客户端中执行 SQL 语句“手动”添加关系:

然后执行 curl 语句:

我得到了一个 JSON 表示,它通过超媒体链接演示 Spring Data REST 识别 Hero 和 Enemy 实体之间的一对多关系:

这是一个现有的 Spring MVC 应用程序,正在向其中添加 Spring Data REST,使用以下文章作为指南:Adding-Spring-Data-REST-to-an-existing-Spring-MVC-Application

我尝试过使用 H2 和 MySQL 数据库,结果相同。下面是我的 JPA 实体、Spring Data JPA 存储库、应用程序上下文和 web.xml:

英雄.java

敌人.java

HeroRepository.java

EnemyRepository.java

root-context.xml包括:

web.xml包括:

有任何想法吗?谢谢!

0 投票
1 回答
682 浏览

spring-data-rest - 事件“beforeLinkSave”和“afterLinkSave”

我试图了解 Sprind 数据 REST 中的验证事件是如何工作的。我了解事件“beforeSave”在我在数据源中保存新信息之前运行。我知道在存储新数据结束时会调用事件“afterSave”。但是,我不明白“beforeLinkSave”和“afterLinkSave”事件何时运行。

有人知道答案吗?

0 投票
0 回答
68 浏览

spring - spring data rest JARs之间的区别

我看到 Maven 存储库中有三个 JAR:

  1. spring-data-rest-core
  2. spring-data-rest-repository
  3. spring-data-rest-webmvc

我过去使用过webmvcJAR,但不确定什么/何时使用其他 JAR。

有什么见解吗?