Попытка перейти на MAMP с использованием java spring boot, hibernate и thmyeleaf, но при проверке встречается ошибка

Я создал свой контроллер, клиент и класс адресов (модели) и шаблоны для индексации и добавления. когда я пытаюсь проверить правильность, возвращается весна:

Произошла непредвиденная ошибка (тип = Внутренняя ошибка сервера, статус =500). Проверка не удалась для классов [com.pooltracker.models.Address] в течение времени сохранения для групп [javax.validation.groups.Default, ] Список нарушений ограничений:[ ConstraintViolationImpl{interpolatedMessage='Invalid', propertyPath=zipCode, rootBeanClass=class com.pooltracker.models.Address, messageTemplate='Invalid'} ConstraintViolationImpl{interpolatedMessage='не может быть нулевым', propertyPath=state, rootBeanClass= класс com.pooltracker.models.Address, messageTemplate='{javax.validot.constraints.message}'} ConstraintViolationImpl{interpolatedMessage=' Не может быть пустым ', propertyPath=street, rootBeanClass=class com.pooltracker.models.Address, messageTemplate=' Не может быть пустым '} ConstraintViolationImpl {interpolatedMessage =' Не может быть пустым ', propertyPath=city, rootBeanClass=class com.pooltracker.models.Address, messageTemplate='Не может быть пустым'} ]

Я пришел, чтобы узнать, что Hibernate не может справиться с проверкой класса адреса. Я наткнулся на тему проверки бобов. Я новичок в этом и пытаюсь найти лучший способ решить мои проблемы, не заходя слишком далеко в кроличью нору. ниже мой контроллер и модели.

@Controller
@RequestMapping("clients")
public class ClientController {

    @Autowired
    private ClientDao clientDao;

    @Autowired
    private AddressDao addressDao;

    @RequestMapping(value = "")
    public String index(Model model) {        
        model.addAttribute("clients", clientDao.findAll());
        model.addAttribute("title", "My Clients");        
        return "clients/index";
    }

    @RequestMapping(value = "add", method = RequestMethod.GET)
    public String displayAddClientForm(Model model) {        
        model.addAttribute("title", "Add Client");
        model.addAttribute(new Client());
        return "clients/add";
    }

    @RequestMapping(value = "add", method = RequestMethod.POST)
    public String processAddClientForm(@ModelAttribute @Valid Client newClient,
                                       Errors errors, Model model) {

         if (errors.hasErrors()) {
            model.addAttribute("title", "Add Client");
            model.addAttribute("client", newClient);
            return "clients/add";
        }        

        clientDao.save(newClient);
        return "redirect:";
    }
}

Client юридическое лицо:

@Entity
@Table(name = "client")
public class Client {

    @Id
    @GeneratedValue
    @Column(name = "client_id")
    private int id;

    @NotNull
    @Size(min=1, message = "Client must have a first name")
    @Column(name = "first_name")
    private String firstName;

    @NotNull
    @Size(min=1, message = "Client must have a last name")
    @Column(name = "last_name")
    private String lastName;

    @OneToOne(cascade = CascadeType.ALL,
                fetch = FetchType.EAGER, optional = false)
    @JoinColumn(name = "address_id")
    private Address address;

    @NotNull
    @Size(min=10, max=10, message = "Must be 10 digits only")
    private String phone;

   // setters/getters
}

Address юридическое лицо:

@Entity
@Table(name = "address")
public class Address {

    @Id
    @GeneratedValue
    @Column(name = "address_id")
    private int id;

    @NotNull
    @Size(min=1, message = "Can not be empty")
    @Column(name = "street")
    private String street;

    @NotNull
    @Size(min=1, message = "Can not be empty")
    @Column(name = "city")
    private String city;

    @NotNull
    @Enumerated(EnumType.STRING)
    @Column(name = "state")
    private State state;

    @NotNull
    @Size(min=5, max=5, message = "Invalid")
    @Column(name = "zip_code")
    private String zipCode;

    @OneToOne(mappedBy = "address" , fetch = FetchType.EAGER)
    //@JoinColumn(name = "client_id")
    public Client client;

    // setters and getters
}

1 ответ

Решение

В Client класс, добавить @Valid в address поле:

@Valid
@OneToOne(cascade = CascadeType.ALL, 
            fetch = FetchType.EAGER, 
            optional = false)
@JoinColumn(name = "address_id")
private Address address;

@Valid Джавадок говорит:

public @interface Valid

Отмечает свойство, параметр метода или тип возвращаемого метода для каскадного валидации.

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