我正在尝试将以下设计用于使用 Spring Data、Hibernate、JPA 框架的类。请注意,@GeneratedValue 和 @Id 注释位于不同的列上。
@Data
@Entity
@Table(name = "ACCTS")
public class MyAccount implements java.io.Serializable {
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="ACCOUNT_ID", nullable=false, precision=10, scale=0)
private long accountId;
@Id
@Column(name="ACCOUNT_NUMBER", unique=true, nullable=false, precision=9, scale=0)
private int accountNumber1;
@Column(name="PRIMARY_NUMBER", nullable=false, precision=9, scale=0)
private int accountNumber2;
}
桌子看起来像这样。请注意,PRIMARY KEY 约束不在 IDENTITY 列上。
CREATE TABLE CAACCTS (
ACCOUNT_ID BIGINT GENERATED BY DEFAULT AS IDENTITY ,
ACCOUNT_NUMBER DECIMAL(9, 0) DEFAULT 0 NOT NULL ,
PRIMARY_NUMBER DECIMAL(9, 0) DEFAULT 0 NOT NULL ,
CONSTRAINT XXX PRIMARY KEY( ACCOUNT_NUMBER ) ) ;
可以创建此表,但 JPA 似乎对 IDENTITY 列有问题 - 从未创建标识值。此外,如果我尝试进行更新,我会收到“DUPLICATE PRIMARY KEY”错误。
有没有人用 JPA 和 Hibernate 成功地完成了这个(拆分 IDENTITY 和 PRIMARY KEY 列)?