java JPA主键前缀
我们有一个表,其中ID由触发器生成-
ID = year+month+sequence
我通过JPA映射了这个表,我想在我的代码中也使用相同的PK生成。我尝试了以下选项:
@Id
@SequenceGenerator(name = "assetSeq", sequenceName = "ASSET_SEQ")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "assetSeq")
@Transient
private long id;
还试图改变二传手
public void setId(long id) {
String finalId=getIdPrefix()+id;
this.id = Long.parseLong(finalId);
}
private String getIdPrefix() {
DateFormat df = new SimpleDateFormat("YYYYMM");
Date today = Calendar.getInstance().getTime();
return df.format(today);
}
但没有一个成功。我只想在数据库中插入新记录,不想以后使用该id。我使用Hibernate进行JPA
# 1 楼答案
如果实现定制的Hibernate生成器,就可以做到这一点This blog的示例与您需要的几乎相同。我将在这里发布博客中的代码,并根据您的需要进行调整(如果您复制粘贴它,可能不起作用,但它将关闭)
希望这有帮助