Hibernate ID列始终是生成的SQL中的最后一列

Hibernate ID列始终是生成的SQL中的最后一列,hibernate,Hibernate,我有一个这样的模型: @MappedSuperclass @AccessType("field") public abstract class BaseEntity { @Id @GeneratedValue(strategy = GenerationType.AUTO, generator = "generator") @Column(name = "ID") private Long id; } @Entity @Table(name = "MODEL")

我有一个这样的模型:

@MappedSuperclass
@AccessType("field")
public abstract class BaseEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO, generator = "generator")
    @Column(name = "ID")
    private Long id;
}

@Entity
@Table(name = "MODEL")
@AccessType("field")
public class Model extends BaseEntity {
    @Column(name="ABC")
    private String abc;
}
无论我尝试什么,我似乎都无法在生成的INSERT或UPDATE sql查询中移动ID列的位置。ID始终作为最后一列结束:

insert into MODEL (ABC, ID) values (?, ?)

有没有其他方法来强制它?

这是一个已知的休眠限制;有关详细信息,请参阅


既然Hibernate将按字母顺序对生成的SQL字段进行排序,为什么不更改CLOB字段的名称以确保它是最后一个字段,比如用“zzz”预挂起它,使它变成
zzzAbc

您为什么在意?顺序不重要。在Oracle中是这样的。如果列ABC是CLOB,那么它必须是最后一列。您是否有支持此声明的参考资料?Hibernate似乎可以与CLOB和oracle配合使用。例如,见。CLOB不是在表中(而不是在insert语句中)必须位于最后位置吗?这描述了完全相同的问题:您是否尝试在模型类或ID字段的重写getter上使用AttributeOverride?问题不在于
创建表中的顺序,如您所述,ID位于第一个位置。但是,Hibernate仍然构建查询,以便ID排在最后:(在
insert
中)。