Я столкнулся с проблемой отношений ManyToMany между классом Restaurant и Tag.Я получил:
public class Tag {
@Id
private int id;
private String name;
@ManyToMany
@JoinTable(name="restaurant_tag",
joinColumns={@JoinColumn(name="tag_id")},
inverseJoinColumns={@JoinColumn(name="restaurant_id")})
private List<Restaurant> restaurants;
и:
public class Restaurant {
@Id
@GeneratedValue
private int id;
(...)
@ManyToMany
@JoinTable(name="restaurant_tag",
joinColumns={@JoinColumn(name="restaurant_id")},
inverseJoinColumns={@JoinColumn(name="tag_id")})
private List<Tag> tags;
В моем JSP я получил:
<form:select multiple="true" path="tags">
<form:options items="${tagList }" itemValue="id" itemLabel="name" />
</form:select>
В моем контроллере я получил:
public ModelAndView myrestaurantadd(HttpServletRequest request,
HttpServletResponse response, Restaurant restaurant)
throws Exception {
restaurantDAO.saveRestaurant(restaurant);
}
Когда я нажимаю кнопку сохранения, я получаю сообщение об ошибке:
Ошибка поля в объекте 'команда' в поле 'теги': отклоненное значение [[Ljava.lang.String; @ 5babd8cb];коды [typeMismatch.command.tags, typeMismatch.tags, typeMismatch.java.util.List, typeMismatch];аргументы [org.springframework.context.support.DefaultMessageSourceResolvable: codes [command.tags, tags];аргументы [];сообщение по умолчанию [теги]];сообщение по умолчанию [Не удалось преобразовать значение свойства типа [java.lang.String []] в требуемый тип [java.util.List] для свойства 'tags';Вложенное исключение - java.lang.IllegalArgumentException: невозможно преобразовать значение типа [java.lang.String] в требуемый тип [beans.Tag] для свойства 'tags [0]': не найдены подходящие редакторы или стратегия преобразования]] с основной причинойorg.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 ошибка