如何在休眠状态下生成字符串ID,如长?

时间:2019-05-19 19:37:36

标签: java hibernate

如何像这样长时间休眠生成字符串ID:

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;


@Id
private String id

我的意思是,我想获取String值,例如“ 1”,“ 2”,“ 3”等。

2 个答案:

答案 0 :(得分:0)

请参见此处以了解您的问题https://thoughts-on-java.org/jpa-generate-primary-keys/

答案 1 :(得分:0)

using(TransactionScope s = new TransactionScope(TransactionScopeOption.Required)) { var temp = new temp {attr1=value1}; _dbcontext.Temps.add(temp); //<<where the issue comes _dbcontext.SaveChanges(); s.Complete(); } 不能与String类型一起使用。因此,如果要使用String作为ID,则必须手动分配它。

可能的解决方案是使用自定义ID生成器:

@GeneratedValue(strategy = GenerationType.IDENTITY)

Id Generator类:

@Id
@GenericGenerator(name = "sequence_id", strategy = "com.xyz.IdGenerator")
@GeneratedValue(generator = "sequence_id")  
@Column(name="Id")
private String Id;