我在制作第一个播放应用程序时遇到了一些麻烦。
我得到了一个可以有一个或多个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创建第二餐时,会发生异常。
答案 0 :(得分:2)
感谢您的反馈,但我想出来了。
我将Meal改为MealEntry与@ManyToMany的关系,它解决了问题。
答案 1 :(得分:1)
看起来您有一个数据库约束,不允许您插入这些重复项。更新您的数据库结构或找到一种方法来表示当前结构中的用餐。
答案 2 :(得分:0)
向我们提供更多信息,因为如果没有您要求执行的请求,就不容易理解为什么您有重复...