Play Framework 2: спасение многих ко многим
Я новичок в Play Framework 2. У меня есть 2 модели: Книга и Автор, у одной книги может быть много авторов, поэтому я думаю, что их много ко многим. Вот мои модели:
@Entity
public class Book extends Model {
@Id
public Long id;
@Constraints.Required
public String title;
@Constraints.Required
@ManyToMany(cascade=CascadeType.ALL,mappedBy="books")
public Set authors = new HashSet();
public static Model.Finder find = new Model.Finder(Long.class, Book.class);
public static Page page(int page, int pageSize, String sortBy, String order, String filter) {
return
find.where()
.ilike("title", "%" + filter + "%")
.orderBy(sortBy + " " + order)
.findPagingList(pageSize)
.getPage(page);
}
}
@Entity
public class Author extends Model {
@Id
public Long id;
@Constraints.Required
public String name;
@ManyToMany(cascade=CascadeType.ALL)
public Set books = new HashSet();
public static Model.Finder find = new Model.Finder(Long.class, Author.class);
public static Page page(int page, int pageSize, String sortBy, String order, String filter) {
return
find.where()
.ilike("name", "%" + filter + "%")
.orderBy(sortBy + " " + order)
.findPagingList(pageSize)
.getPage(page);
}
}
и я'используя этот тег выбора в форме ввода, например так:
bejo
joko
и вот мой код контроллера:
Map newData = new HashMap();
Map urlFormEncoded = play.mvc.Controller.request().body().asFormUrlEncoded();
if (urlFormEncoded != null) {
for (String key : urlFormEncoded.keySet()) {
String[] value = urlFormEncoded.get(key);
if (value.length == 1) {
newData.put(key, value[0]);
} else if (value.length > 1) {
for (int i = 0; i < value.length; i++) {
newData.put(key + "[" + i + "].id", value[i]);
}
}
}
}
Form bookForm = new Form(Book.class).bind(newData);
if(bookForm.hasErrors()) {
return badRequest(createForm.render(bookForm));
}
bookForm.get().save();
но эти коды не работают. может ли какое-то тело помочь мне? Спасибо