Java JPA:如何更改主键中列的顺序
我使用Spring数据JPA和PostgreSQL 10 考虑到课程Java JPA:如何更改主键中列的顺序,java,postgresql,hibernate,jpa,spring-data-jpa,Java,Postgresql,Hibernate,Jpa,Spring Data Jpa,我使用Spring数据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() } 及
@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()
}
及
在数据库中,该表由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)
)
出于性能原因,我想要
主键(a,b)
而不是主键(b,a)
。如何在不重命名列的情况下实现这一点?尝试@embeddeble for复合键
@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;
}
JPA规范不允许在模式定义中定义列顺序的机制。一些JPA提供者(例如DataNucleus)允许扩展来实现这一点。不知道你的供应商。你可以自己定义模式,这没有用。即使我交换a和b,我也会得到
约束测试\u table\u pkey主键(a,b)
而不是。。。主键(b,a)
。
@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;
}