使用Spring数据Rest发布到集合关联
我很难创建一个收藏协会,我可以张贴。 我有两个实体,设备和组,具有多对多关系。使得设备可以在零个或多个组中,并且一个组可以包含零个或多个设备 我可以通过发布到/api/devices和/api/groups/来创建新的设备和组实体。根据我对文档的阅读,devices集合中的设备应该有一个RestResource,它表示该设备所属的组集合(即/api/devices/{deviceId}/groups)。这是一个“关联资源”由于它是使用Spring数据Rest发布到集合关联,spring,rest,jpa,spring-data-rest,Spring,Rest,Jpa,Spring Data Rest,我很难创建一个收藏协会,我可以张贴。 我有两个实体,设备和组,具有多对多关系。使得设备可以在零个或多个组中,并且一个组可以包含零个或多个设备 我可以通过发布到/api/devices和/api/groups/来创建新的设备和组实体。根据我对文档的阅读,devices集合中的设备应该有一个RestResource,它表示该设备所属的组集合(即/api/devices/{deviceId}/groups)。这是一个“关联资源”由于它是Set的一个实例,我本以为它被视为一个集合关联。我可以获取uri列
Set
的一个实例,我本以为它被视为一个集合关联。我可以获取uri列表并将其放入该关联,但当我发布到它时,我会得到一个404
该列表可能会变得相当大,我希望能够发布一个新的收藏协会链接,而不必下载整个内容修改它并将其放回
政府说这应该得到支持,但我运气不好
如有任何建议,将不胜感激
这些域类定义为:
@Entity
public class Device {
@Id
@GeneratedValue
private Long id;
private String name;
@ManyToMany(targetEntity = Group.class, cascade = CascadeType.ALL)
private Set<Group> groups;
// getters, setters
}
@实体
公共类设备{
@身份证
@生成值
私人长id;
私有字符串名称;
@ManyToMany(targetEntity=Group.class,cascade=CascadeType.ALL)
私有集合组;
//能手,二传手
}
以及
@实体(name=“设备组”)
公共课组{
@Id@GeneratedValue
私人长id;
私有字符串名称;
@许多(mappedBy=“组”)
专用设备;
//能手,二传手
}
每个存储库都声明了一个存储库:
public interface DeviceRepository extends PagingAndSortingRepository<Device, Long> {
}
public interface GroupRepository extends PagingAndSortingRepository<Group, Long> {
}
公共接口设备存储库扩展了分页和排序存储库{
}
公共接口组存储库扩展了分页和排序存储库{
}
使用修补程序,这样您就不必获取现有集合。只需使用新链接调用修补程序,现有集合就会得到更新。例如:
将新链接(设备)添加到集合:
curl -i -X PATCH -H "Content-Type: text/uri-list" -d "http://localhost:8080/app/device/1" http://localhost:8080/app/group/87/devices
curl -i -X PATCH -H "Content-Type: text/uri-list" -d "
http://localhost:8080/app/device/2
http://localhost:8080/app/device/3" http://localhost:8080/app/group/87/devices
将多个设备添加到现有集合:
curl -i -X PATCH -H "Content-Type: text/uri-list" -d "http://localhost:8080/app/device/1" http://localhost:8080/app/group/87/devices
curl -i -X PATCH -H "Content-Type: text/uri-list" -d "
http://localhost:8080/app/device/2
http://localhost:8080/app/device/3" http://localhost:8080/app/group/87/devices
您也可以使用PUT请求。使用Spring数据REST编写的好例子有:
春季宠物克林克项目
Spring数据REST入门
谢谢,效果很好。我还发现我可以通过删除(例如)从集合中删除单个条目。然而,目前有一个大的警告,即该关系必须由集团所有。但这只是JPA为您提供的。您知道是否可以使用application/json
来实现这一点,以及语法是什么吗?我知道这很旧,但非常感谢您的回答,您帮了我很大的忙!