我有 REST API 應用程式,當我創建一個具有相同用戶名的用戶時,它始終創建,但我希望用戶名是唯一的,因為在真實應用程式中用戶名對于每個用戶都是唯一的,我如何在 DB 中提供檢查用戶名? 我希望我的應用程式在創建用戶名已經存在的用戶時拋出一些訊息,當然,不要保存已經存在的新用戶用戶名
我的用戶物體:
@Table(name = "usr", uniqueConstraints=
@UniqueConstraint(columnNames={"username", "email"}))
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "username")
private String username;
@Column(name = "password")
private String password;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
@Column(name = "role")
private Role role;
@Column(name = "email")
private String email;
@Column(name = "status")
private Status status;
// @OneToMany(mappedBy = "author")
// private List<Message> messages;
// @OneToMany(mappedBy = "author")
// private List<Comment> comments;
@OneToOne
@JoinColumn(name = "gender_id")
private Gender gender;
@OneToOne
@JoinColumn(name = "address_id")
private Address address;
@ManyToMany
@JoinTable(
name = "user_subscriptions",
joinColumns = @JoinColumn(name = "channel_id") ,
inverseJoinColumns = @JoinColumn(name = "subscriber_id"))
private Set<User> subscribers;
@ManyToMany
@JoinTable(
name = "user_subscriptions",
joinColumns = @JoinColumn(name = "subscriber_id") ,
inverseJoinColumns = @JoinColumn(name = "channel_id"))
private Set<User> subscriptions;
@OneToOne
@JoinColumn(name = "file_id")
private FileEntity fileEntity;
我的用戶服務:
@Transactional
public User save(UserRequest user) {
provideAllUserCheckingActionsForSave(user);
User userUntilSave = userMap.userRequestToUser(user,Role.USER,Status.ACTIVE);
userUntilSave.setPassword(passwordEncoder.encode(userUntilSave.getPassword()));
User saved = userRepo.save(userUntilSave);
log.info("User save method invoked");
return saved;
}
uj5u.com熱心網友回復:
您可以使用 @unique 注釋將唯一值存盤在資料庫中,如果它拋出例外而不采用唯一值,則應處理該例外。
uj5u.com熱心網友回復:
您可以向控制器添加驗證,或者您可以簡單地執行以下操作:- 當用戶想要注冊時,獲取用戶名并在資料庫中搜索它是否已經存在。如果 findByUsername(username) 回傳 null 則執行下一個操作并注冊用戶,否則回傳一些錯誤訊息。
uj5u.com熱心網友回復:
在創建用戶之前,可以通過用戶名搜索用戶,如果搜索結果為空,則創建新用戶,如果搜索結果不為空,則處理問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/415515.html
標籤:
下一篇:使用多列的連續行之間的差異
