Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我想在spring boot中动态地从db获取数据_Java_Spring Boot_Spring Data Jpa - Fatal编程技术网

Java 我想在spring boot中动态地从db获取数据

Java 我想在spring boot中动态地从db获取数据,java,spring-boot,spring-data-jpa,Java,Spring Boot,Spring Data Jpa,我正在使用spring引导框架构建RESTAPI。我需要使用fields=creationDate,relatedParty[role,name]获取请求中请求的数据/列(从多个表中)。它必须是动态获取,就像请求中的任何字段值一样。我需要从数据库中动态获取这些特定数据。据我所知,我建议您根据需要使用一对多或多对多映射。比如,如果我有一个帖子模型和一个评论模型,并且我想从帖子模型中获取评论,那么我将使用一对多关系 @Entity @Table(name = "posts") p

我正在使用spring引导框架构建RESTAPI。我需要使用fields=creationDate,relatedParty[role,name]获取请求中请求的数据/列(从多个表中)。它必须是动态获取,就像请求中的任何字段值一样。我需要从数据库中动态获取这些特定数据。

据我所知,我建议您根据需要使用一对多或多对多映射。比如,如果我有一个帖子模型和一个评论模型,并且我想从帖子模型中获取评论,那么我将使用一对多关系

@Entity
@Table(name = "posts")
public class Post {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @Column(name = "title")
    private String title;

    @OneToMany(mappedBy = "post",
            cascade = {CascadeType.ALL})

    List<Comment> comments = new ArrayList<>();

}

Spring数据JPA中没有对此的特殊支持,因此您应该回到JPA,即您编写一个自定义方法并获得一个
EntityManager
注入来使用

您可以使用CriteriaAPI根据输入创建查询

此站点应该让您开始使用CriteriaAPI

将您的域模型映射到REST API。对于不需要进一步业务逻辑的简单API非常有用。
@Entity
@Table(name = "comments")
public class Comment  {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String name;
    private String comment;

    @ManyToOne(cascade = {CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
    @NotFound(action = NotFoundAction.IGNORE)
    @JoinColumn(name = "posts_id", nullable = true)
    private Post post;
}