当前位置: 首页 > 面试题库 >

如何在Spring Data Rest Application中的实体之间创建引用

宋育
2023-03-14
问题内容

我正在尝试使用Spring Boot + Data Rest + JPA构建简单的应用程序。
具有一对多关系的Category和Book实体:

<!-- language-all: java -->    
@Entity
public class Category {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String name;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "category")
    private Set<Book> books;

    ...getters & setters next...
}

@Entity
public class Book {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    private String name;
    @ManyToOne
    private Category category;

    ...getters & setters next...
}

每个实体的简单存储库

@RepositoryRestResource
public interface BookRepository extends JpaRepository<Book, Long> {}

@RepositoryRestResource
public interface CategoryRepository extends JpaRepository<Category, Long> {}

和应用:

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

应用程序成功启动,我可以创建书籍和类别。
问: 如何创建和删除它们之间的引用?

我尝试了这里描述的解决方案:在Spring Data
REST中发布@OneToMany子资源关联 -不适用于我:在带有
ContentType:text / uri-list”
标头的PUT请求上,我的响应代码为204,并且在数据库。更深入地看,我在日志中发现以下调试消息:

s.w.s.m.m.a.RequestMappingHandlerMapping : 
Did not find handler method for [/categories/1/books]

该网址仅适用于GET请求。

问:有 什么想法我的配置有问题吗?

谢谢。


问题答案:

创建 书(编号:1)之间的关系和类别(ID:1):

  • 提出要求
  • 媒体类型:文本/ uri-list,
  • 数据:http:// localhost:8080 / categories / 1
  • 请求到http:// localhost:8080 / books / 1 / category

卷曲示例:

curl -X PUT -H "Content-Type: text/uri-list" -d "http://localhost:8080/categories/1" http://localhost:8080/books/1/category

删除 此关系,只需对同一地址执行删除请求

卷曲示例:

curl -X DELETE http://localhost:8080/books/1/category

还要回答您的第二个问题:您的配置看起来不错,并且我已经在您的代码上测试了此示例。



 类似资料:
  • 我想创建基于JPA规范的过滤器。我正在使用Spring数据。 我的实体: 实体依赖项为:第1节-一对多- 我有一个转换为规范的问题过滤器类。我想了解第节中的所有问题。 通常,我会使用下面编写的SQL查询来获取部分中的所有问题。 我尝试过使用Join创建规范,但不知道如何在问题上的目标参考不可用时创建连接。

  • 应用程序开始成功,我可以创建书籍和类别。 问题:如何创建和删除它们之间的引用? 我尝试了这里描述的解决方案:在Spring Data REST中发布@onetomany子资源关联--对我不起作用:在带有“contenttype:text/uri-list”头的PUT请求上,我有响应代码204,数据库中没有任何变化。深入观察,我在日志中发现了以下调试消息: 此url仅用于GET请求。

  • 在我的项目中,我有两个领域模型。父实体和子实体。父对象引用子对象的列表。(如帖子和评论)这两个实体都有他们的spring数据JPA

  • 问题内容: 我正在尝试在Amazon Redshift中创建索引,但收到错误 是一个整数字段。 问题答案: 如果尝试在Redshift表上创建索引(带有名称): 您会收到错误消息 执行SQL命令时发生错误:在“ SomeTable”(“ UserId”)上创建索引IX1错误:Redshift表不支持SQL命令“在” SomeTable“(” UserId“))上创建索引IX1。 这是因为,与其他数

  • 有两个问题看起来很相似,但它们不是同一个问题:这里和这里。它们都调用的方法,例如或,我知道这会返回一个。我要问的是如何将(class)对象本身转换为。我将在下面举例说明。 构建一个示例,如下所示。 上面的应该如下所示(显然有不同的数字)。 我想做的是按列名称和采取分组(按此顺序),这样我就可以得到一个由列名称和采取构建的多索引索引,如下所示。 我如何实现这一点?如果我做了,那么是一个实例。正确的做

  • 我是全新的MongoDB,所以很抱歉,如果这个问题是基本的。 我试图获得一个使用Java basic对象(POJO)的基本CRUD,但这段代码失败了。(正确的方法是什么?我认为可能接近这个): 这是我得到的信息:

  • 问题内容: 我必须链接两个容器,以便它们可以互相看到。当然以下… …在第1行失败,因为容器需要启动并运行才能成为链接目标: 创建双向链接的最简单方法是什么? 问题答案: Docker 1.10通过引入高级容器网络很好地解决了这一问题。(详细信息:https : //docs.docker.com/engine/userguide/networking/dockernetworks/) 首先,创建一