Playframework PersistenceException: ОШИБКА при выполнении DML bindLog [] ошибка [Уникальный индекс или нарушение первичного ключа

0

Я делаю небольшой "веб-сайт", используя playframework. Я создал метод создания ploeg en для их отображения. но когда я пытаюсь удалить их (сделал кнопку для этого), 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 часов.

  • 0
    Проверьте, почему оператор вставки выполняется при удалении
  • 0
    Я сделал это, но я не могу найти, где он вызывает этот оператор вставки. Вы можете видеть, через какие шаги он проходит, и без знака, где он запускает функцию вставки или любую другую функцию.
Показать ещё 4 комментария
Теги:
playframework

1 ответ

0

В моем файле маршрутов я имел следующую строку:

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

И я изменил его на:

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

Я не знаю почему, но это работает!

Ещё вопросы

Сообщество Overcoder
Наверх