2017-04-25 52 views
0

在我的春节,引导我有用户@Entity这样的:弹簧安置的Json使用JPA实体和DTO的

用户:

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

在REST 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

+0

你的问题是什么,因为它不清楚? –

+0

@AlanHay我刚刚编辑了我的问题:) – crooked

+0

一种选择是避免DTO和直接处理实体。有些人会反对,但这是一个意见。使用这种方法并使用Spring Data和Spring Data Rest模块,您几乎不需要代码即可创建完整的REST API。 https://spring.io/guides/gs/accessing-data-rest/ –

回答

0

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

为什么你创建UserInfos类?为什么这个班的班级不能在User班?如果您将UserInfos字段设置为User类,则它可以不那么复杂。

+0

我认为将“细节”与“必须”属性分开是很好的做法。但是现在用DTO类看起来实际上有点无意义。 – crooked