JPA:如何更改主键中的列顺序

Joh*_*gel 5 java postgresql hibernate jpa spring-data-jpa

我使用 Spring Data JPA 和 PostgreSQL 10。

鉴于课程

@Entity
@Table(name = "test_table")
@IdClass(TestTableId.class)
public class TestTable {
    @Id
    private int b;
    @Id
    private int a;
    private int c;
    // Getters, setters, hashCode() and equals()
}
Run Code Online (Sandbox Code Playgroud)

public class TestTableId implements Serializable {
    private int b;
    private int a;
    // Constructors, getters, setters, hashCode() and equals()
}
Run Code Online (Sandbox Code Playgroud)

在数据库中,表是由 hibernate 通过创建的

CREATE TABLE test_table
(
    a integer NOT NULL,
    b integer NOT NULL,
    c integer NOT NULL,
    CONSTRAINT test_table_pkey PRIMARY KEY (a, b)
)
Run Code Online (Sandbox Code Playgroud)

我想要PRIMARY KEY (a, b)而不是PRIMARY KEY (b, a)出于性能原因。如何在不重命名列的情况下实现此目的?

ABH*_*HRI 0

尝试使用 @Embeddable 组合键

@Embeddable
public class key implements Serializable {

    private static final long serialVersionUID = 1L;
    @Column(name = "a")
    private String a;
    @Column(name = "b")
    private String b;
}

public class App implements Serializable {

    private static final long serialVersionUID = 1L;
    @EmbeddedId
    private Key id;
}
Run Code Online (Sandbox Code Playgroud)