如何在休眠中以特定顺序创建表列?

San*_*lai 5 java sql-server hibernate

我的问题有重复,但尚未回答。我是休眠的初学者,同时使用属性从 SQL Server 中的实体自动创建表

<property name="hibernate.hbm2ddl.auto">create</property>

似乎表列的顺序不正确,这对我来说不是问题,直到我使用复合键。现在的问题是列的顺序与业务实体不同。这是我创建的业务实体

@Entity
public class SalesEstimateDtl implements Serializable {
@Id
private Long LedSalesEstID;
@Id
private Integer LedSalesEstRowNo;
Run Code Online (Sandbox Code Playgroud)

这是生成的查询

CREATE TABLE [dbo].[SalesEstimateDtl](
             [LedSalesEstRowNo] [int] NOT NULL,
             [LedSalesEstID] [numeric](19, 0) NOT NULL,
             PRIMARY KEY CLUSTERED 
             (
               [LedSalesEstRowNo] ASC,
               [LedSalesEstID] ASC
             ) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

如何使用 LedSalesEstID 更改 LedSalesEstRowNo 的顺序?

N00*_*mer 2

事实上,使用注释指定的列创建的表不应该依赖于它的顺序。这两个SELECT *语句都不能完全确保列按特定顺序排列。

根据 Hibernate 团队的回应,这似乎是一个已知问题,无法通过 Hibernate 设置列的顺序。在这里发帖。

据我了解,我们可能并不完全依赖 Hibernatehbm2ddl来创建表。通过 Hibernate 创建表后,我们可以很好地更改它以根据需要对列进行排序。

希望这能回答您的问题!