Я пробовал: < /p>
[*] Восстановление всего моего проекта (
Код: Выделить всё
mvn clean build
[*] Проверка требуемых зависимостей
[*] Подтверждено, что все аннотации взяты от jakarta.validation.*, а не javax.validation.* (для @email annotation)
[*] vending invalid in vindation in vindation invalid inpalid invalid invalid in vindation)
< /ul>
Тем не менее, ошибка проверки не запускается, и пользователь все еще создается.
Код: Выделить всё
User.java
Код: Выделить всё
package com.sathwikhbhat.journalApp.entity;
import jakarta.validation.constraints.Email;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.NonNull;
import org.bson.types.ObjectId;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.DBRef;
import org.springframework.data.mongodb.core.mapping.Document;
import java.util.ArrayList;
import java.util.List;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Document(collection = "users")
public class User {
@Id
private ObjectId id;
@Indexed(unique = true)
@NonNull
private String userName;
@NonNull
@Indexed(unique = true)
@Email
private String email;
private boolean sentimentAnalysis;
@NonNull
private String password;
@DBRef
private List journalEntries = new ArrayList();
private List roles;
}
< /code>
[b]PublicController.java
package com.sathwikhbhat.journalApp.controller;
import com.sathwikhbhat.journalApp.entity.User;
import com.sathwikhbhat.journalApp.service.UserService;
import jakarta.validation.Valid;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
@RequestMapping("/public")
public class PublicController {
@Autowired
private UserService userService;
@PostMapping("createUser")
public ResponseEntity createUser(@Valid @RequestBody User user) {
try {
userService.saveNewUser(user);
log.info("User created successfully: {}", user.getUserName());
return new ResponseEntity(HttpStatus.CREATED);
} catch (DuplicateKeyException e) {
log.error(e.getMessage());
return new ResponseEntity("Username already exists: ", HttpStatus.CONFLICT);
} catch (Exception e) {
log.error(e.getMessage());
return new ResponseEntity("Internal server error: " + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
}
}
}
< /code>
Одна вещь, которую я подозреваю, заключается в том, что использование классов сущностей MongoDB (то есть @document < /code>) непосредственно в качестве моделей ввода в методах контроллера может привести к тому, что механизм проверки весны молча пропустить проверки ограничений, поскольку эти классы в первую очередь предназначены для персистенции, а не для подтверждения данных. < /p>
< /p> < /p> < /p>
Class? /> < /ol>
Любое понимание или предложения были бы очень оценены! < /p>
Подробнее здесь: https://stackoverflow.com/questions/796 ... on-mongodb