Konnte nicht execute JDBC batch update
habe ich ein wenig Schwierigkeiten während machen mein ersten play-Anwendung.
Bekam ich ein Klasse Essen, das kann eine oder mehrere MealEntries. Ein Menü-Eintrag kann verwendet werden, um mehrere Mahlzeiten (ich.e wenn u Essen 2 Eier für mehr als eine Mahlzeit). Aber ich bin immer eine Ausnahme.
Kann ich verstehen, warum ich die Ausnahme, aber ich kann nicht Bild, wie kann ich heilen.
Dies ist meine Ausnahme:
Caused by: java.sql.BatchUpdateException: Duplicate entry '4' for key 'mealEntries_id'
at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:2020)
at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1451)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeBatch(NewProxyPreparedStatement.java:1723)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
... 12 more
Mahlzeit Klasse:
public class Meal extends Model {
public String name;
public Date consumed;
@OneToMany
public List<MealEntry> mealEntries;
}
MealEntry Klasse:
public class MealEntry extends Model {
public int amount;
@OneToOne
public Unit unit;
@OneToOne
public FoodType type;
@OneToOne
public MealEntry with;
}
Vielen Dank im Voraus
Edit:
Versucht, erstellen Sie einen Testfall, aber lief in einige andere Fehler.
Ich werde versuchen zu erklären:
Die Ausnahme passiert, wenn ich versuche, zu schaffen eine zweite Mahlzeit mit MealEntries, dass auch die erste Mahlzeit.
Hibernate hat eine Tabelle zu handhaben, die 1-zu-viele-Beziehung, die Sie brauchen, um zu bestehen. Die Tabelle hat eine Spalte namens
mealEntries_id
im Interesse der Erhaltung der Reihenfolge der List<MealEntry>
. Es wäre gut zu prüfen, die Struktur der Tabelle und überprüfen, ob hibernate erstellt eine UNIQUE KEY
Einschränkung auf mealEntries_id
. Wenn ja, versuchen Sie ändern es manuell. Könntest du poste den SQL-code, der automatisch generiert durch Hibernate (betreffend die Erstellung der Tabelle und der select
Abfragen)?InformationsquelleAutor lassejl | 2011-02-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Danke für das feedback, aber ich fand es heraus.
Änderte ich meine Mahlzeit zu MealEntry Bezug auf @ManyToMany und es löste das problem.
InformationsquelleAutor lassejl
Sieht aus wie Sie eine Datenbank Einschränkung, die nicht zulässt, dass Sie fügen Sie diese Duplikate. Aktualisieren Sie Ihre Datenbank-Struktur oder einen Weg finden, zu vertreten, die Mahlzeit in der aktuellen Struktur.
InformationsquelleAutor jzd
Uns ein bisschen mehr Informationen, denn ohne die Anfragen, die Sie führen, es ist nicht wirklich leicht zu sehen, warum haben Sie Duplikate...
InformationsquelleAutor mandubian