【问题标题】:How to select multiple data in one SQL Query in JAVA JPA Spring Boot如何在JAVA JPA Spring Boot中的一个SQL查询中选择多个数据
【发布时间】:2019-07-14 17:40:58
【问题描述】:

我有包含组列表的用户实体。每个组有两个列表:submissionDocumentType 和 reviewDocumentType。使用尽可能少的数据库调用获取用户的 GroupDetails 对象列表的最有效方法是什么(请参阅下面的最终预期结果)?

User.java

public class User {
@Id
@GeneratedValue(generator ="uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2")
private String id;

@ManyToMany(mappedBy = "users")
private Set<UserGroup> userGroups;

用户组

public class UserGroup {

@Id
@GeneratedValue(generator ="uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2")
private String id;

@ManyToMany(mappedBy = "submissionUserGroups")
private List <DocumentType> submissionDocumentType;


@ManyToMany(mappedBy = "reviewUserGroups")
private List <DocumentType> reviewDocumentType;

GroupDetails.java

public class GroupDetails {

private String groupTitle;
private List<String> reviewDocTypes;
private List<String> submitDocTypes;

GET 方法的预期响应

[
{
    "groupTitle": "Group one",
    "reviewDocTypes": [
        "Prasymas Eazy",
        "Prasymas Tgwz",
        "Prasymas Gien",
        "Prasymas Docs",
        "Prasymas Ecyd",
        "Prasymas Sjvz"
    ],
    "submitDocTypes": [
        "Prasymas Buor",
        "Prasymas Kzhc",
        "Prasymas Zokx",
        "Prasymas Vvtb",
        "Prasymas Docs",
        "Prasymas Lutj",
        "atostogu prasymas"
    ]
},
{
    "groupTitle": "Group two",
    "reviewDocTypes": [
        "Prasymas Tgwz",
        "Prasymas Gien",
        "Prasymas Kzhc",
        "Prasymas Kblj",
        "Prasymas Docs",
        "Prasymas Ecyd"
    ],
    "submitDocTypes": [
        "Prasymas Tgwz",
        "Prasymas Wmwx",
        "Prasymas Buor",
        "Prasymas Gien",
        "Prasymas Kzhc",
        "Prasymas Kblj",
        "Prasymas Docs",
        "Prasymas Xdau",
        "Prasymas Lutj",
        "Prasymas Ecyd",
        "atostogu prasymas"
    ]
}
]

【问题讨论】:

    标签: java sql spring-boot jpa jpql


    【解决方案1】:

    我想你可以在一个查询中完成。正如您在the reference documentation 中看到的那样:

    Spring Data 允许对专用返回类型进行建模,以便更有选择地检索托管聚合的部分视图。将查询结果限制为仅名称属性的最简单方法是声明一个接口,该接口将属性的访问器方法公开给被阅读

    所以我们可以使用这样的查询方法获取结果:

    interface UserRepository extends Repository<User, String> {
        Collection<GroupDetails> findById(String userId);
    }
    

    【讨论】:

      猜你喜欢
      • 2019-07-18
      • 2020-02-26
      • 2012-11-05
      • 2022-01-09
      • 2014-10-21
      • 1970-01-01
      • 2016-12-17
      • 1970-01-01
      • 2021-05-12
      相关资源
      最近更新 更多