热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

java–自定义SpringDataRest@ManyToMany关系处理

我有一个运行Spring-Data-Rest的简单项目,通过RestAPI公开一些实体,比如这个(简化,减去SettersGetters):@EntitypublicclassGr

我有一个运行Spring-Data-Rest的简单项目,通过Rest API公开一些实体,比如这个(简化,减去Setters / Getters):

@Entity
public class Group {
@Id
@GeneratedValue
private int id;
...
}
@Entity
public class Person{
@Id
@GeneratedValue
private int id;
...
}

现在,显然每个小组都可以拥有人员作为成员,这可以通过@ManyToMany轻松解决.不幸的是(或者通常是?)组成员资格包含的信息不仅仅是“是成员”.例如,它还应包括“是管理员”或“是隐藏成员”的信息.

这自然导致了一个额外的实体……

@Entity
public class GroupMember {
@OneToOne(optiOnal= false)
@JoinColumn(updatable = false)
private Person member;
@OneToOne(optiOnal= false)
@JoinColumn(updatable = false)
private Group group;
private boolean admin;
private boolean hidden;
...
}

哪个不会那么糟糕,但遗憾的是会导致问题…我不能再简单地通过将文本/ uri-list发布到(例如)/ groups / 1 / member来将成员添加到组中,但我必须而是通过发布到/ groupMembers /来创建一个新的GroupMember实体,这是imho,不再那么舒服,并打破了群组REST“树”的凝聚力.

如何解决这个问题并允许简单的POST创建一个(基本的)GroupMember,默认值为?当然我可以在那里放一个新的@RepositoryRestController来捕获/ groups / 1 / members的任何POST请求,但这会阻止text / uri-list列表(因为它似乎不支持).我可以定义一个新对象,例如使用人员ID,但这会破坏流程,简单发布链接列表会更好.

另一种方法是找到一种方法来映射Hibernate @ManyToMany本身而不需要额外的实体……但我不知道这样的方式……

解决方法:

如果您正在处理spring数据休息并希望在自定义控制器中处理text / uri-list,则可以使用类型为Resources的参数传递值,如下所示:

@RequestBody Resources incoming

你通过调用incoming.getLinks()获得uris

您可以将spring数据rest控件作为参考 – org.springframework.data.rest.webmvc.RepositoryPropertyReferenceController#createPropertyReference


推荐阅读
  • MySQL初级篇——字符串、日期时间、流程控制函数的相关应用
    文章目录:1.字符串函数2.日期时间函数2.1获取日期时间2.2日期与时间戳的转换2.3获取年月日、时分秒、星期数、天数等函数2.4时间和秒钟的转换2. ... [详细]
  • 本文将带你快速了解 SpringMVC 框架的基本使用方法,通过实现一个简单的 Controller 并在浏览器中访问,展示 SpringMVC 的强大与简便。 ... [详细]
  • Spring Boot 中配置全局文件上传路径并实现文件上传功能
    本文介绍如何在 Spring Boot 项目中配置全局文件上传路径,并通过读取配置项实现文件上传功能。通过这种方式,可以更好地管理和维护文件路径。 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • Spring框架中枚举参数的正确使用方法与技巧
    本文详细阐述了在Spring Boot框架中正确使用枚举参数的方法与技巧,旨在帮助开发者更高效地掌握和应用枚举类型的数据传递,适合对Spring Boot感兴趣的读者深入学习。 ... [详细]
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • ECharts 官方提供了丰富的图表示例,但实际项目中往往需要从后端动态获取数据。本文将详细介绍如何从后端获取数据并将其转换为 ECharts 所需的 JSON 格式,以实现动态饼图的展示。 ... [详细]
  • Tornado框架中模块与静态文件的应用
    本文详细介绍了Tornado框架中模块和静态文件的使用方法。首先明确模块与模板的区别,然后通过具体的代码示例展示如何在HTML文档中使用模块,并配置模块的路由。最后,提供了模块类中参数获取的示例。 ... [详细]
  • 原文网址:https:www.cnblogs.comysoceanp7476379.html目录1、AOP什么?2、需求3、解决办法1:使用静态代理4 ... [详细]
  • 技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统
    技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统 ... [详细]
  • 深入解析Struts、Spring与Hibernate三大框架的面试要点与技巧 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 本文详细探讨了几种常用的Java后端开发框架组合及其具体应用场景。通过对比分析Spring Boot、MyBatis、Hibernate等框架的特点和优势,结合实际项目需求,为开发者提供了选择合适框架组合的参考依据。同时,文章还介绍了这些框架在微服务架构中的应用,帮助读者更好地理解和运用这些技术。 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • 深入解析 SQL 数据库查询技术
    本文深入探讨了SQL数据库查询技术,重点讲解了单表查询的各种方法。首先,介绍了如何从表中选择特定的列,包括查询指定列、查询所有列以及计算值的查询。此外,还详细解释了如何使用列别名来修改查询结果的列标题,并介绍了更名运算的应用场景和实现方式。通过这些内容,读者可以更好地理解和掌握SQL查询的基本技巧和高级用法。 ... [详细]
author-avatar
手机用户2502858307
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有