【问题标题】:I want to fetch the data from db dynamically in spring boot我想在spring boot中动态地从db中获取数据
【发布时间】:2021-04-12 12:32:45
【问题描述】:

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

【问题讨论】:

  • Spring Data Rest 将您的域模型映射到 REST API。对于不需要更多业务逻辑的简单 API 很有用。

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


【解决方案1】:

据我了解您的问题,我建议您根据您的要求使用一对多或多对多映射。就像如果我有一个帖子模型和一个评论模型,并且我想从帖子模型中获取 cmets,那么我将使用一对多的关系。

@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<>();

}

而在评论模型中,我会这样做。

@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;
}

【讨论】:

    【解决方案2】:

    Spring Data JPA 对此没有特别支持,因此您应该回退到 JPA,即您编写一个自定义方法并注入一个 EntityManager 来使用。

    您可以使用 Criteria API 根据您的输入随意创建查询。

    这个网站应该让你开始使用 Criteria API https://www.baeldung.com/hibernate-criteria-queries

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-01
      • 1970-01-01
      • 2020-08-17
      • 1970-01-01
      • 2020-04-19
      • 2019-12-22
      相关资源
      最近更新 更多