При добавлении invNum которого нету в базе все работает и добавляется, а вот если есть уже такой в базе то ошибка! класс валидации
@Component("bookValidator")
public class BookValidator implements Validator {
@Autowired
private CatalogBooksService catalogBooksService;
@Override
public boolean supports(Class<?> aClass) {
return CatalogBooks.class.equals(aClass);
}
@Override
public void validate(@Nullable Object o, Errors errors) {
CatalogBooks catalogBooks = (CatalogBooks) o;
if (catalogBooksService.getCatalogBookByInvNum(catalogBooks.getInvNum()) != null){
errors.rejectValue("invNum","jjj","Книга с таким инвентарным номером уже существует!");
}
}
}
так получаю из базы существующий номер
@Override
public CatalogBooks getCatalogBookByInvNum(int invNum) {
CatalogBooks catalogBooks = (CatalogBooks) currentSession().createQuery("from CatalogBooks c where c.invNum =:inv")
.setParameter("inv",invNum)
.setMaxResults(1)
.uniqueResult();
return catalogBooks;
}
это контроллер
@RequestMapping(value = "/bookAdd", method = RequestMethod.POST)
public String bookNew(@ModelAttribute @Valid CatalogBooks catalogBooks,
@ModelAttribute Category category,
BindingResult bindingResult,
Model model){
bookValidator.validate(catalogBooks, bindingResult);
if (bindingResult.hasErrors()){
Map<String, String> errorsMap = ControllerUtils.getErrors(bindingResult);
model.addAttribute("errorsMap", errorsMap);
model.addAttribute("book", catalogBooks);
model.addAttribute("category", categoryService.categoryList());
}else {
Category category1 = categoryService.getCategory(category.getId_Category());
catalogBooks.setCategory(category1);
catalogBooksService.addCatalogBook(catalogBooks);
model.addAttribute("addOk", true);
}
model.addAttribute("category", categoryService.categoryList());
return "/bookAdd";
}
Выскакивает ошибка
класс Category
@Entity
@Table(name = "categoryes")
public class Category {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column (name = "id_category")
private int id_Category;
@Column (name = "name")
private String categoryName;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "category")
private Set<CatalogBooks> catalogBooks;
public Category() {
}
public int getId_Category() {
return id_Category;
}
public void setId_Category(int id_Category) {
this.id_Category = id_Category;
}
public String getCategoryName() {
return categoryName;
}
public void setCategoryName(String categoryName) {
this.categoryName = categoryName;
}
public Set<CatalogBooks> getCatalogBooks() {
return catalogBooks;
}
public void setCatalogBooks(Set<CatalogBooks> catalogBooks) {
this.catalogBooks = catalogBooks;
}
@Override
public String toString() {
return "Category{" +
"id_Category=" + id_Category +
", categoryName='" + categoryName + '\'' +
//", catalogBooks=" + catalogBooks +
'}';
}
}
класс CatalogBooks
@Entity
@Table(name = "catalog_books")
public class CatalogBooks {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id_catalog_book")
private int id;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "category_id")
private Category category;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "catalogBooks")
Set<Give> gives;
@NotBlank(message = "Название книги не может быть пустым")
@Column (name = "name")
private String name;
@Column (name = "author")
private String author;
@Column (name = "year")
private int year;
@Column (name = "inv_num")
private int invNum;
@Column (name = "count_book")
private int countBook;
public CatalogBooks(){
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Category getCategory() {
return category;
}
public void setCategory(Category category) {
this.category = category;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public int getInvNum() {
return invNum;
}
public void setInvNum(int invNum) {
this.invNum = invNum;
}
public int getCountBook() {
return countBook;
}
public void setCountBook(int countBook) {
this.countBook = countBook;
}
@Override
public String toString() {
return "CatalogBooks{" +
"id=" + id +
", category=" + category +
", name='" + name + '\'' +
", author='" + author + '\'' +
", year=" + year +
", invNum=" + invNum +
", countBook=" + countBook +
'}';
}
}
@ModelAttribute Category category, надо было ставить после BindingResult bindingResult,
@RequestMapping(value = "/bookAdd", method = RequestMethod.POST)
public String bookNew(@ModelAttribute @Valid CatalogBooks catalogBooks,
BindingResult bindingResult,
@ModelAttribute Category category,
Model model){
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Здраствуйте, у меня вопрос, У меня есть множество классов помеченые какой то анотацией, мне нужно все класы которие помечение анотацией засунуть...
Знаю, что переменные static как бы общие для всех классов и являются единственным экземпляромНо зачем нам нужны статические методы ? И почему...
Появился вопрос конвертации текста из fb2 в markdownСамый легкий способ который мне приходит на ум это просто использование стандартных функций...
Реализовываю rest api с авторизацией через гуглАвторизация проходит, но дальнейшее обращение к эндпойнтам происходит на основании сессии, а не через...