java - jpa多表查询 - 在jpa中生成的表中排序錯誤




hibernate (2)

這應該是一件相當簡單的事情,但是我正在努力。

我想要像這樣生成一個表:

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 Long id;
    private String organizationNumber;
    private String name;

    public Organization() {
    }

    public Organization(String name) {
        this.name = name;
    }

    @Id
    @GeneratedValue
    public Long getId() {
        return id;
    }

    @SuppressWarnings("unused")
    private void setId(Long id) {
        this.id = id;
    }

    @NotEmpty
    @Column(unique=true, nullable=false)
    public String getOrganizationNumber() {
        return organizationNumber;
    }
       public void setOrganizationNumber(String organizationNumber) {
        this.organizationNumber = organizationNumber;
    }


    @NotEmpty
    @Column(nullable=false)
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return this.name + " " + this.organizationNumber;
    }
}

DataNucleus允許擴展指定模式生成的位置FWIW。


Hibernate 按字母順序生成列。 根據這篇文章 ,原因如下:

它被排序以確保跨群集的確定性排序。

我們不能依賴vm每次都以相同的順序返回方法,因此我們必須做一些事情。

顯然它曾經是按照發生的順序,但是在3.2.0 GA和3.2.1 GA之間發生了變化。

我還發現Schema自動生成按字母順序為複合主鍵創建列 ,這似乎就像你的問題。 此票證是關於主鍵中訂單的更改,並且會對索引性能產生負面影響。

除了以正確順序出現的方式命名列的解決方法之外沒有其他解決辦法(不,我不是在開玩笑)。





jpa