【发布时间】:2016-04-26 11:24:41
【问题描述】:
我有一个 Spring Data Rest 项目,它公开了一个由 JPA 和休眠管理的实体。 我使用多个 PATCH 请求更新了实体中的多个多对多关系。
所以我将 PATCH 请求发送到端点,实体 url 列表作为每个多对多关系的主体。
补丁请求同时发生,所以一个请求被处理,第二个并发请求给出
行被另一个事务更新或删除(或未保存值映射不正确)
有没有办法同时修补实体? 示例实体就像,
User {
List<Role> roles;
List<Module> modules;
}
Role 和 Module 都发生并发修补请求。
编辑:这是我用来修补的 Angular 代码。
var patchRequests = [];
angular.forEach(copy, function (value, property) {
if (angular.isArray(copy[property])) {
// If array contains more than zero elements
if (copy[property].length > 0) {
patchRequests.push(
$http.patch(url,copy[property].join('\n'), {
headers: {
'Content-type': 'text/uri-list'
}
}));
}
}
});
$q.all(patchRequests);
“复制”对象如下所示
{"roles":["http://localhost:9002/api/roles/1","http://localhost:9002/api/roles/3"],"modules":["http://localhost:9002/api/modules/1"],"subModules":[],"userName":"hrandika","password":"password","email":"h@local","activated":true}
编辑 2: Spring Data rest 只是一个接口
@Repository
public interface UserRepository extends PagingAndSortingRepository<User, Long>{
}
【问题讨论】:
-
向我们展示您进行修补的代码。
-
@RobertMoskal 我已经添加了 AngularJS 代码和我用来修补的对象。只需遍历对象属性,选择数组,如果数组长度> 0,则发送一个 PATCH。
-
这是我认为我们需要查看的服务器端端点。
-
@RobertMoskal 我已经添加了 Edit 2。它是一个用 '@Repository' 注释的界面
标签: angularjs spring-data-rest