Playframework PersistenceException:ERROR执行DML bindLog []错误[唯一索引或主键冲突

时间:2014-01-04 15:02:16

标签: java html scala playframework

我正在使用playframework创建一个小“网站”。我已经创建了一个方法来创建一个ploeg来显示它们。但是当我尝试删除它们时(按钮做了那个)ik给了我这个错误:

    [PersistenceException: ERROR executing DML bindLog[] error[Unique index or primary key
    violation: "PRIMARY_KEY_4 ON PUBLIC.PLOEG(ID)"; SQL statement:\n insert into ploeg 
    (id, naam, punten) values (?,?,?) [23505-172]]]

这是我的Ploeg.java中的错误所在的方法:

    public static void maak(Ploeg ploeg) {
        ploeg.save();
    }

这是我的Ploeg.java:

package models;

import play.data.validation.Constraints;
import play.db.ebean.Model;

import play.data.validation.Constraints.*;
import javax.persistence.*;
import java.util.*;
/**
 * Created by Bram on 3/01/14.
 */

@Entity
public class Ploeg extends Model {

@Id
public Long id;

//@Required
public String naam;
public Integer punten;

public static Finder<Long, Ploeg> find = new Finder(
        Long.class, Ploeg.class
);

public static List<Ploeg> all() {
    return find.all();
}

public static Ploeg maak(Ploeg ploeg) {
    ploeg.save();
    return ploeg;
}

public static void delete(Long id) {
    find.ref(id).delete();
}

public static void geefPunt(Long id) {
    Ploeg ploegje = find.byId(id);
    ploegje.punten = ploegje.punten + 3;
}

}

现在从我的Applicaion.java中调用该方法,如下所示:

    public static Result deletePloeg(Long id) {
        Ploeg.delete(id);
        return redirect(routes.Application.ploegen());
    }

再次通过单击删除按钮从index.scala.html触发该方法:

    @form(routes.Application.deletePloeg(ploeg.id)) {
        <input type="submit" value="Delete">
    }

我希望有人可以帮我解释这个错误的含义以及解决方法。我一直试图这样做超过6个小时。

1 个答案:

答案 0 :(得分:0)

在我的路线文件中,我喜欢这一行:

POST    /ploegen                    controllers.Application.deletePloeg(id: Long)

我改为:

POST    /                           controllers.Application.deletePloeg(id: Long)

我不知道为什么,但它确实有效!