Java Hibernate-@OrderColumn-删除项导致异常

Java Hibernate-@OrderColumn-删除项导致异常,java,hibernate,jpa,Java,Hibernate,Jpa,我不熟悉Hibernate(5.2.3.final),并尝试将其用于私人项目以熟悉它。数据库是本地服务器上的MariaDB(5.5.53-0070),Hibernate方言设置为“org.Hibernate.dialogue.mysql5Innodbdialogue” 在我的申请中,我有两个年级和一年两个班。每年可以按用户定义的顺序包含多个等级。我尝试让Hibernate通过使用@OrderColumn(name=“listOrder”)保存等级列表的顺序 到目前为止,这很有效,我只是有重新排列

我不熟悉Hibernate(5.2.3.final),并尝试将其用于私人项目以熟悉它。数据库是本地服务器上的MariaDB(5.5.53-0070),Hibernate方言设置为“org.Hibernate.dialogue.mysql5Innodbdialogue”

在我的申请中,我有两个年级和一年两个班。每年可以按用户定义的顺序包含多个等级。我尝试让Hibernate通过使用
@OrderColumn(name=“listOrder”)
保存等级列表的顺序
到目前为止,这很有效,我只是有重新排列列表的问题: 每当我从列表中删除一个项以将其插入同一列表中的另一个位置时,Hibernate都会创建一个导致QueryException的update语句

我的测试代码如下所示:

// grades is the list managed by Hibernate, it contains 4 entries
// here it is received from the first Year entry in the database

List<Grade> grades = ym.getElementAt(0).getGrades();
SessionUtil.beginTransaction();
Grade grade = grades.get(0);
grades.remove(0);  // remove from current position
SessionUtil.flush();        
grades.add(grade);  // add to end of list
SessionUtil.commitTransaction();
我理解,同一个等级在同一个列表中(甚至在任何列表中)可能不会存在两次。我只是不明白,为什么Hibernate这样做,而不只是更新年份/年级组合的listOrder列

在课程年中,我定义了包含年级对象的列表:

@OneToMany
@OrderColumn(name="listOrder")
private List<Grade> grades = new DataObjectList<Grade>();

public List<Grade> getGrades() {
    return grades;
}
@OneToMany
@OrderColumn(name=“listOrder”)
私有列表等级=新的DataObjectList();
公开名单{
返回等级;
}
在班级等级中,我没有指向年份的变量,因为我总是只从一个方向访问数据(从年级到科目…)

我已经阅读了Hibernate或JBoss网站上的在线文档,并且已经使用Google好几个小时了。我找到的所有建议似乎都不能解决我的问题

这可能是数据库的错误方言吗?我是否错过了一些要设置的注释


提前感谢您的帮助……

这是否回答了您的问题?
@OneToMany
@OrderColumn(name="listOrder")
private List<Grade> grades = new DataObjectList<Grade>();

public List<Grade> getGrades() {
    return grades;
}