2017-04-25 79 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