【问题标题】:How to create a reference between entities in Spring Data Rest Application如何在 Spring Data Rest Application 中的实体之间创建引用
【发布时间】:2017-01-06 20:31:55
【问题描述】:

我正在尝试使用 Spring Boot + Data Rest + JPA 构建简单的应用程序。
A 具有具有一对多关系的 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);
    }
}

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

我尝试了这里描述的解决方案:POSTing a @OneToMany sub-resource association in Spring Data REST - 对我不起作用:在带有 "ContentType: text/uri-list" 标头的 PUT 请求中,我有响应代码 204,并且数据库中没有任何更改。深入研究,我在日志中发现了以下调试消息:

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

此网址仅适用于 GET 请求。

问:知道我的配置有什么问题吗?

谢谢。

【问题讨论】:

    标签: java spring spring-boot spring-data-jpa spring-data-rest


    【解决方案1】:

    创建 book(id:1) 和 category(id:1) 之间的关系:

    卷曲示例:

    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
    

    还要回答你的第二个问题:你的配置看起来不错,我已经在你的代码上测试了这个例子。

    【讨论】:

    • 这个解决方案对我有用,谢谢!是否可以一次将几本书添加到一个类别?
    • 我已尝试撤销该 put(或 post)请求,但尚未成功。我没有例外,我的行为与您发现的错误描述相符。
    猜你喜欢
    • 2018-05-01
    • 1970-01-01
    • 2015-10-03
    • 2015-05-15
    • 1970-01-01
    • 1970-01-01
    • 2016-09-26
    • 1970-01-01
    • 2018-11-23
    相关资源
    最近更新 更多