Не удалось выполнить пакетное обновление JDBC - PullRequest
2 голосов
/ 16 февраля 2011

У меня небольшие проблемы при создании моего первого игрового приложения.

Я получил класс еды, в котором может быть один или несколько объектов MealEntries. Один прием пищи может быть использован для нескольких приемов пищи (т.е. если вы едите 2 яйца за более чем один прием пищи). Но я получаю исключение.

Я могу понять, почему я получаю исключение, но я не могу понять, как я могу это вылечить.

Это мое исключение:

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

Класс питания:

public class Meal extends Model {
public String name;
public Date consumed;

@OneToMany
public List<MealEntry> mealEntries;
}

Класс MealEntry:

public class MealEntry extends Model {
public int amount;

@OneToOne
public Unit unit;

@OneToOne
public FoodType type;

@OneToOne
public MealEntry with;
}

Заранее спасибо

Edit: Пытался создать тестовый пример, но столкнулся с какой-то другой ошибкой. Я постараюсь объяснить: Исключение происходит, когда я пытаюсь создать второй прием пищи, используя MealEntries, которые также используются в первом приеме пищи.

Ответы [ 3 ]

2 голосов
/ 17 февраля 2011

Спасибо за отзыв, но я разобрался.

Я изменил отношение Meal к MealEntry на @ManyToMany, и это решило проблему.

1 голос
/ 16 февраля 2011

Похоже, у вас есть ограничение базы данных, которое не позволяет вставлять эти дубликаты.Обновите структуру своей базы данных или найдите способ представить блюдо в текущей структуре.

0 голосов
/ 17 февраля 2011

Дайте нам немного больше информации, потому что без выполняемых вами запросов не очень легко понять, почему у вас есть дубликаты ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...