我有一个扩展模型的类,包含一个简短的文本和 id。对象存储在数据库中。
我当前的问题是:每次我尝试编辑条目时都会创建一个新版本,而不是替换旧版本的对象。
对我来说,它看起来好像对象在保存之前被复制了?
如果有人能告诉我如何避免这种情况,我会很高兴!:-)
模型:
@Entity
public class Entry extends Model {
private static final long serialVersionUID = 1L;
@Required
public String text;
public String studentName = "Hans";
@Id
public long id;
public static Finder<Long, Entry> finder = new Finder<Long, Entry>( Long.class, Entry.class);
public static Entry getMe(Long id) {
return finder.byId(id);
}
public static List<Entry> getAll() {
return finder.all();
}
public static void saveMe(Entry toDataBase) {
if(finder.byId(toDataBase.id)!=null) // this seems to be always NULL
{
System.out.println("update");
toDataBase.update();
}
else
{
System.out.println("save new");
toDataBase.save();
}
}
控制器部分:
public static Result createReport(Long id) {
if(Entry.getMe(id)==null)
return ok(reports.render(form(Entry.class), Entry.getMe(id)));//Entry.class)));
return ok(reports.render(entryForm.fill(Entry.getMe(id)),Entry.getMe(id)));//form(Entry.class), Entry.getMe(id)));//Entry.class)));
}
public static Result storeReport() {
Form<Entry> filledForm = entryForm.bindFromRequest();
if(filledForm.hasErrors()) {
return badRequest(error.render());
} else {
Entry.saveMe(filledForm.get());
return ok(reports.render(filledForm, filledForm.get()));
}
}
编辑:html部分:
@(entryForm: Form[Entry],e: Entry)
@import helper._
@main("report creation") {
<h1>report for Nils</h1>
@form(routes.Application.storeReport()) {
@textarea(entryForm("text"))
<input type="submit" value="Store Report">
}
<br />
<br />
@(if(e!=null)e.getid())
@form(routes.Application.listStuff()) {
<input type="submit" value="Overview">
}
}