从数据库编辑对象

时间:2012-10-14 22:14:53

标签: playframework playframework-2.0

我有一个扩展模型的类,持有一个短文本和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">
    }
}

0 个答案:

没有答案