【发布时间】:2021-08-30 04:58:04
【问题描述】:
我的 events 表中需要有一个 event_number 列,可以唯一标识每一行,但是该列不是表的@Id。每个 event_number 必须遵循某种格式,例如 EVENT100001,EVENT100002,...
我浏览了@GeneratedValue注解,发现这只能与@Id列一起使用。但后来找到this 的答案,但不确定它是否会导致任何竞争条件。
有没有更清洁的方法呢?这是我的实体
@Entity
@Table(name = "events")
public class Event {
@Id
@Access(AccessType.PROPERTY)
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column(name = "event_number", nullable = false, unique = true)
private String eventNumber;
}
【问题讨论】:
-
eventNumber的值是应该基于id生成的,还是完全独立的。 -
完全独立,唯一的要求是遵循
EVENT100001,EVENT100002,...的顺序,以EVENT100001为起始值。 -
也许this answer 会有所帮助
-
这在我的情况下不支持字母数字要求
-
你应该使用
MyGenerator implements ValueGenerator<String>。然后通过添加您需要的前缀来稍微修改generateValue
标签: java sql hibernate jpa entity