当前位置: 首页 > 知识库问答 >
问题:

保存相关实体spring数据rest HAL-JSON

商皓
2023-03-14

我有跟风问题

我有一个Spring数据Rest的基本配置(没有花哨,没有自定义)。

使用spring数据rest webmvc 2.0.0版本和spring数据jpa 1.5.0版本

A类

@Entity
public class A {

   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   private int id

   private String name;

   @ManyToMany
   private List<B> b;

   // getters setters
}

B类

@Entity
public class B {

   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   private int id

   private String nameb;

   @ManyToMany(mappedBy = "b")
   private List<A> a;

   // getters setters
}

存储库A

@Repository
@RestResource(rel = "a", path = "a")
public interface ARepository extends PagingAndSortingRepository<A, Integer> {

}

存储库B

@Repository
@RestResource(rel = "b", path = "b")
public interface BRepository extends PagingAndSortingRepository<B, Integer> {

}

当我拯救一个实体时工作正常,但我不知道如何拯救一段关系

e、 g.使用http将“A”保存在“B”中

这是我从这个答案中尝试的最后一件事https://stackoverflow.com/a/13031580/651948

POST http://localhost:8080/api/a

{
    "name": "Name of A",
    "b": {
        "rel": "b",
        "href": "http://localhost:8080/api/b/1"
    }
}

我得到一个201 http代码,但没有保存实体。

有人试过了吗?

共有1个答案

乐正镜
2023-03-14

尝试只使用URL。

POST http://localhost:8080/api/a
Content-Type: application/json

{
    "name" : "Name of A",
    "b": "http://localhost:8080/api/b/1"
}

或者,对你来说,可能是

"b" :  ["http://localhost:8080/api/b/1"]

因为A.b是一个列表,所以您需要提交一个数组。但没有对此进行测试。

这应该是自Spring 2.0以来的有效方式(请参阅Spring Data Rest 2.0.0。释放中断以前使用RC1的代码),它对我很有效。

 类似资料:
  • 我有一个问题,Spring数据没有保存实体。应用程序逻辑如下: 另一个应用程序正在监听负载相当重的Kafka主题(每秒数十条消息)并将消息插入数据库中具有“NEW”状态的表中。 @调度方法加载一个具有“NEW”状态的实体列表,这些实体被一个接一个地传输到FixedThreadPool(20个线程),它们的状态设置为“PROCESSING”和一个saveAll方法调用同一个表。 这两种日志方法都显示

  • 我是Hibernate的新手,并要求使用具有这些列的表的数据库 表:TBL _ product//库存项目列表< br >列:< br > key _ product < br > key _ category < br > fld _ product _ name < br > fld _ Inventory _ qty < br > fld _ unit _ price < br > fld

  • 我有一个使用JPA的Spring Boot应用程序,它有两个数据源,一个用于DB2,一个用于SQL Server。 当我尝试将实体保存到SQL Server时,不会抛出任何错误,但该实体不会持久化到数据库。我看不到日志中正在生成插入。 提前感谢 下面是我尝试保存实体所执行的代码@组成部分 下面是sql Server配置。 这是SQL Server存储库 公共接口BeercupMessageLogR

  • 我有一个实体CandidateTransaction和CandidateTransactionRepository扩展了CrudRepository 我正在使用CrudRepository的save方法来保存所述实体的对象。当实体没有行时,它将创建一个自动生成的键并将其插入ID列,而不需要Java端的干预。 而且,由于CrudRepository的save()方法检查实体是否是新的,如果是新的,它

  • 我在Symfony2.8上遇到了一个多实体关系的问题。我有实体旅行,它可以由许多经验实体组成。 以下是我的旅行定义: 另一方面,我有经验实体: 在控制器中,用户可以生成一个新的行程,将对象置于会话中以调用它,直到真正的关联。 问题。在第一次通话时,它就像一个魔咒,添加experience\u trip条目,一切正常。在第二次调用时,具有不同经验的trip persisting正在寻找经验实体上的级

  • 我有2个实体(我删除了无用的字段): 而且 这似乎符合我的情况(也是我当前的实现),但它不起作用。 我得到以下错误消息: 来自MySQL: 临时解决方案是从存储库中检索所有相应的权限(按permissionName搜索)。那么保存效果很好。逻辑上是正确的,但我希望有一个更简单的程序...