Spring Boot 3.4.6 Проверка не запускается для @email и @nonnull на объекте mongodb @documentJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Spring Boot 3.4.6 Проверка не запускается для @email и @nonnull на объекте mongodb @document

Сообщение Anonymous »

Я строю приложение Spring Boot 3.4.6 с использованием MongoDB и сталкиваю проблему, в которой аннотации @nonnull и @email не запускают ошибки проверки/исключения, даже если я использую @valid @requestbody в контроллере. Единственная валидация, которая работает, - это @Indexed (уникальный = true) < /code> < /p>
Я пробовал: < /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
класс объектов [/b]

Код: Выделить всё

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
класс контроллера [/b]
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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»