2
レストランとタグの間に多くの関係があります。ここに私の実体である:Spring MVCに多対多を保存する
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;
そして:
私のコントローラで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 ModelAndView myrestaurantadd(HttpServletRequest request,
HttpServletResponse response, Restaurant restaurant, String[] tags) throws Exception {
for(String tag : tags){
Tag x = new Tag();
x.setName(tag);
restaurant.getTags().add(x);
}
そして、私のjspで:
<form:form action="myrestaurantadd.htm" modelAttribute="restaurant" commandName="restaurant">
(...)
<form:select path="tags" multiple="true" items="${tagList}" itemLabel="name" itemValue="id"/>
すべてOKを示しています、私はタグで複数選択しましたが、私は「保存」をクリックしたときに、私はこのエラーを得た:
> org.springframework.web.util.NestedServletException:
> Request processing failed; nested
> exception is
> org.springframework.beans.BeanInstantiationException:
> Could not instantiate bean class
> [[Ljava.lang.String;]: No default
> constructor found; nested exception is
> java.lang.NoSuchMethodException:
> [Ljava.lang.String;.<init>()
あなたのエラーには関係ありませんが、マッピングが間違っています:関連付けの1つは、@ManyToMany(mappedBy = "...")を使用してもう一方の逆でなければなりません。 http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/#d0e1727を参照してください。また、アソシエーションの両側を常に初期化します(つまり、add x.getRestaurants()。add(restaurant)) –