【问题标题】:Spring Rest Json with JPA entities and DTO's带有 JPA 实体和 DTO 的 Spring Rest Json
【发布时间】:2017-04-25 18:40:28
【问题描述】:

在我的 Spring Boot 中,我有用户 @Entity 喜欢:

用户:

public class User {
    private long id;
    private String username;
    private String password;
    private String email;
    private LocalDate birthday;
    private boolean enabled = false;
    private String firstName;
    private String lastName;
    private String address;

    @ManyToMany(mappedBy = "users")
    private Set<Game> games;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "gameOwner", orphanRemoval = true)
    private List<Game> gamesOwned;
}

在休息 API。我想创建User,所以我创建了UserDto。

public class UserDto {
    private String username;
    private String password;
    private String email;
    private LocalDate birthday;

    private String firstName;
    private String lastName;
    private String address;
}

问题?

我有 User 实体和 DTO 类。要创建用户,我使用 DTO 类。为了获得用户,我不能使用 DTO 类,因为它包含的信息比我要少。我应该用@JsonIgnore 注释User 类还是创建另一个DTO?

【问题讨论】:

  • 你的问题是什么,因为不清楚?
  • @AlanHay 我刚刚编辑了我的问题 :)
  • 一种选择是避免 DTO 并直接处理实体。有些人会反对,但这是一个见仁见智的问题。您可以使用这种方法并使用 Spring Data 和 Spring Data Rest 模块创建一个几乎没有代码的完整 REST API。 spring.io/guides/gs/accessing-data-rest

标签: java json spring rest jpa


【解决方案1】:

字段 passwordConfirm 适用于 DTO 类但没有实体。在 DTO 中,您会将 password 与 passwordConfirm 匹配,但在实体类中,这两个字段应该具有相同的值,因此您不需要两个字段。

你为什么要创建UserInfos 类?为什么此类中的字段不能在 User 类中?如果您将UserInfos 字段放入User 类,它可以不那么复杂。

【讨论】:

  • 我认为将“详细信息”与“必须”属性分开会很好。但是现在有了 DTO 类,它实际上似乎有点无目的。
猜你喜欢
  • 1970-01-01
  • 2022-01-04
  • 1970-01-01
  • 2017-04-29
  • 1970-01-01
  • 1970-01-01
  • 2019-03-27
  • 2021-06-16
  • 1970-01-01
相关资源
最近更新 更多