【问题标题】:how to create table column in a particular order in hibernate? [duplicate]如何在休眠中以特定顺序创建表列? [复制]
【发布时间】:2018-04-07 08:08:08
【问题描述】:

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

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

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

@Entity
public class SalesEstimateDtl implements Serializable {
@Id
private Long LedSalesEstID;
@Id
private Integer LedSalesEstRowNo;

这是生成的查询

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]

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

【问题讨论】:

  • 我的回答有问题吗,只是热衷于理解问题和问题本身的实际答案?为什么你不接受答案?
  • 抱歉,我尝试将移动应用程序用于 stackOverflow,但出错了:D

标签: java sql-server hibernate


【解决方案1】:

使用 @EmbeddedId

 @Entity
    class Student{
        @EmbeddedId
        StudentInfo id;

        String Name;
        String Class;
        Integer RollNo;
    }

    @Embeddable
    class StudentInfo implements serializable {
        Integer StudentID;
        Integer StudentRowNo;
    }

【讨论】:

    【解决方案2】:

    在 Hibernate 配置文件中使用下面的属性

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

    然后在创建 SessionFactory 之前使用下面的代码。 String file = "SqlSchema.sql"; SchemaUpdate update = new SchemaUpdate(configuration); update.setOutputFile(file); update.execute(false, false);

    它将在一个包含所有 DDL 查询的位置创建 SqlSchema.sql 文件。以您想要的任何顺序编辑它们。

    【讨论】:

      【解决方案3】:

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

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

      据我了解,我们可能并不完全依赖 Hibernate 的 hbm2ddl 创建表。通过 Hibernate 创建表的那一刻,我们可以很好地 ALTER 它以根据需要对列进行排序。

      希望这能回答你的问题!

      【讨论】:

        猜你喜欢
        • 2013-02-11
        • 2016-02-14
        • 1970-01-01
        • 2012-09-08
        • 1970-01-01
        • 2015-09-25
        • 1970-01-01
        • 2013-10-27
        • 1970-01-01
        相关资源
        最近更新 更多