我在spring boot hibernate中实现了一个带有自动生成注释的复合主键。下面是场景:
- 帐户表有以下几列:
stateCode,branchCode,prodCode,subProdCode,accountNumber
每当 stateCode,branchCode,prodCode,subProdCode 发生变化时,表 Account 应该有新的 accountNumber 。
例如:
stateCode,branchCode,prodCode,subProdCode,accountNumber
11,01,20,1,00001
11,01,30,1,00001 (there is a change in prodCode)
11,01,30,2,00001 (there is a change in subprodcode)
11,01,20,2,00001 (there is a change in prod & subprodcode)
11,01,20,1,00002 (prodcode,subprod code has already account number 00001 ,
now it should be 00002)
同样的问题已经发布在具有复合主键的序列上,
但我想知道,最新版本的 spring boot hibernate 中是否引入了任何新功能。
下面是我已经实现的代码:
@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
@IdClass(CompositeId.class)
public class CompositeAccountNumber {
private String city;
private String custName;
@Id
@GeneratedValue
private Long accNumber;
@Id
private String stateCode;
@Id
private String branchCode;
@Id
private String prodCode;
@Id
private String subProdCode;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class CompositeId implements Serializable {
private String stateCode;
private String branchCode;
private String prodCode;
private String subProdCode;
private Long accNumber;
}
我用上面的代码得到以下结果:
stateCode,branchCode,prodCode,subProdCode,accountNumber
11,01,20,1,00001
11,01,30,1,00002
11,01,30,2,00003
11,01,20,2,00004
11,01,20,1,00005