无法执行JDBC批量更新

时间:2011-02-16 18:54:24

标签: java jpa jdbc playframework

我在制作第一个播放应用程序时遇到了一些麻烦。

我得到了一个可以有一个或多个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;
}

提前致谢

修改 试图创建一个测试用例,但遇到了一些其他错误。 我会试着解释一下: 当我尝试使用第一餐也使用的MealEntries创建第二餐时,会发生异常。

3 个答案:

答案 0 :(得分:2)

感谢您的反馈,但我想出来了。

我将Meal改为MealEntry与@ManyToMany的关系,它解决了问题。

答案 1 :(得分:1)

看起来您有一个数据库约束,不允许您插入这些重复项。更新您的数据库结构或找到一种方法来表示当前结构中的用餐。

答案 2 :(得分:0)

向我们提供更多信息,因为如果没有您要求执行的请求,就不容易理解为什么您有重复...