这应该是一件相当简单的事情,但我正在努力.
我希望像这样生成一个表:
id organizationNumber name
但是,当我查看数据库时,我发现排序错误.有谁知道我如何强制hibernate/jpa生成正确排序的表?
desc Organization; +--------------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------------+--------------+------+-----+---------+----------------+ | id | bigint(20) | NO | PRI | NULL | auto_increment | | name | varchar(255) | NO | | NULL | | | organizationNumber | varchar(255) | NO | UNI | NULL | | +--------------------+--------------+------+-----+---------+----------------+
这就是我的实体bean的样子:
@Entity
@NamedQuery(name = "allOrganizations", query = "SELECT org FROM Organization org order by name")
public class Organization {
private … 我让hbm2ddl为我创建表(用于开发目的),列的顺序与类中的字段相反.
如何使它按照与类相同的顺序创建列?
我认为Java类不存储字段的顺序,因此Hibernate根本不知道源中的顺序是什么(如果我考虑更复杂的情况,这似乎是合乎逻辑的).
但是,我能否至少要求Hibernate将PK和FK列作为第一列?
Hibernate 4.0.0(JBoss AS 7.1.2)MySQL 5.1.x.
我的问题有重复,但尚未回答。我是休眠的初学者,同时使用属性从 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 的顺序?