【发布时间】:2011-07-09 12:14:37
【问题描述】:
我遇到了餐厅和标签类之间的多对多关系的问题。我得到了:
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: 代码 [command.tags,tags];论据 [];默认消息[标签]];默认消息 [无法将 [java.lang.String[]] 类型的属性值转换为属性“标签”所需的类型 [java.util.List];嵌套异常是 java.lang.IllegalArgumentException:无法将类型 [java.lang.String] 的值转换为属性“tags [0]”所需的类型 [beans.Tag]:找不到匹配的编辑器或转换策略]],根本原因 org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 个错误
【问题讨论】:
标签: hibernate spring-mvc many-to-many