Как применить проверку на стороне сервера в списке объектов при весенней загрузке? Spring не проверяет список <Address>, который присутствует в классе сотрудников

Я хочу проверить список адресов и все его свойства город, штат, пин-код Я дал всю весеннюю проверку в классе Address, но она не прошла проверку.

Класс адреса

@Entity
@Table(name = "ADDRESS")

public class Address {


@Id
@GeneratedValue
@Column(name = "ADDR_ID")
private Long addr_id;

@NotNull(message = "city should not be null")
@Column(name = "CITY")
private String city;

@NotNull(message = "state should not be null")
@Column(name = "STATE")
private String state;

@NotNull(message = "pincode should not be null")
@Column(name = "PINCODE")
private Integer pincode;


@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name = "FK_EMP_ID", referencedColumnName = "ID")
@JsonBackReference
@Valid
@NotNull
private Employee emp;

//getter & setter omitted for breveity

Класс сотрудника

@Entity
@Table(name = "EMPLOYEE")
public class Employee {

@Id
@GeneratedValue
@Column(name = "ID")
private Long id;

@NotNull(message = "name should not be null")
@Size(min=1,  max=15 ,message = "Name should be min 1 and max 15")
@Column(name = "EMPLOYEE_NAME")
private String name;

@NotNull(message = "salary should not be null")
@Column(name = "EMPLOYEE_SALARY")
private Integer salary;

@NotNull(message = "department should not be null")
@Column(name = "DEPARTMENT")
private String department;

@OneToMany(mappedBy = "emp", cascade = {CascadeType.ALL}, 
orphanRemoval=true,fetch=FetchType.LAZY)
@JsonManagedReference
@NotNull(message = "address should contain atleast 1 address")
private List<Address> address = new ArrayList<Address>();

//getter & setter omitted for breveity

Почтальон Джсон

{
"name": "aakash",
"salary": 546,
"department": "IT",
"age":32,
"email":"agag@gma",
"address":[
     {
        "city":"Mumbai"
     }
    ]

}

When i pass list of address and some of its properties it's showing following error.

javax.validation.ConstraintViolationException: Validation failed for classes 
[com.example.springDataJPA.model.Address] during persist time for groups 
[javax.validation.groups.Default, ]
List of constraint violations:[
ConstraintViolationImpl{interpolatedMessage='pincode should not be null', 
propertyPath=pincode, rootBeanClass=class 
com.example.springDataJPA.model.Address, messageTemplate='pincode should not 
be null'}
ConstraintViolationImpl{interpolatedMessage='state should not be null', 
propertyPath=state, rootBeanClass=class 
com.example.springDataJPA.model.Address, messageTemplate='state should not 
be null'}

Я хочу проверить список адресов со всеми свойствами и должен вернуть правильное сообщение по умолчанию в формате json.

Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
1
0
606
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

@NotNull проверяет, только если список не равен нулю. Вместо этого попробуйте использовать @NotEmpty.

(Хорошая статья о разнице: https://www.baeldung.com/java-bean-validation-not-null-empty-blank)

Он не проверяет свойства адреса

Aakash Khatavkar 20.02.2019 09:34

Это отдельная проблема. Добавьте @ Valid в адреса List<String> (как вы сделали с частным Employee emp) или в общие (адреса List<@Valid String>), последний предпочтительнее в соответствии с документами валидатора Hibernate (docs.jboss.org/hibernate/stable/validator/reference/en-US/…‌​, я полагаю, что вы используете этот поставщик проверки)

amseager 20.02.2019 09:54

Другие вопросы по теме