Java Hibernate@OrderBy Anotation和MySQLSyntaxerRoreException

Java Hibernate@OrderBy Anotation和MySQLSyntaxerRoreException,java,hibernate,jpa,Java,Hibernate,Jpa,我尝试实现@OrderByhibernate注释,但在“order子句”中得到错误未知列“matches0.start” ... @Entity @Table(name ="algo") public class Algo{ ... @JsonView(Views.Internal.class) @ManyToMany(fetch = FetchType.LAZY ) @OrderBy(clause = "start") // want order list by start

我尝试实现
@OrderBy
hibernate注释,但在“order子句”中得到错误
未知列“matches0.start”

...
@Entity
@Table(name ="algo")
public class Algo{
  ...
  @JsonView(Views.Internal.class)
  @ManyToMany(fetch = FetchType.LAZY )
  @OrderBy(clause = "start") // want order list by start
  protected List<DbMatch> matches = new ArrayList<DbMatch>();
  ...
匹配类别和
开始
字段:

...
@Entity
@Table(name="matches")
public class DbMatch extends Match{
...
...
@MappedSuperclass
public class Match {
  @Column(columnDefinition="DATETIME")
  @JsonSerialize(using=JsonDateSerializer.class)
  @JsonView(Views.Public.class)
  private Date start;
  ...

看起来您使用的是
org.hibernate.annotations.OrderBy
,它需要一个SQL子句

您应该改用
javax.persistence.OrderBy
,它需要一个属性名:

@Entity
@Table(name ="algo")
public class Algo{
  ...
  @ManyToMany(fetch = FetchType.LAZY )
  @OrderBy("start")
  protected List<DbMatch> matches = new ArrayList<DbMatch>();
@实体
@表(name=“algo”)
公共类算法{
...
@ManyToMany(fetch=FetchType.LAZY)
@订购人(“开始”)
受保护列表匹配项=新建ArrayList();

您能否在数据库中显示您的
匹配项
表?尝试使用
@OrderBy(“start ASC”)
而不是
@OrderBy(子句=“start”)