我试图在数据库模型中强制hibernate生成UUID字段,但问题是该字段不是主@Id
字段,不能以这种方式完成。
我的模型看起来像这样:
@Entity
@Table(name = "myModel")
public class MyModel {
private Long id;
private UUID uuid;
@Id @GeneratedValue(strategy=GenerationType.AUTO)
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Column(columnDefinition = "BINARY", length = 16)
@GenericGenerator(name = "uuid", strategy = "uuid2")
public UUID getUuid() {
return uuid;
}
public void setUuid(UUID uuid) {
this.uuid = uuid;
}
}
有没有其他方法可以实施此策略?
更新
@Entity
@Table(name = "myModel")
public class MyModel {
private Long id;
private UUID uuid;
@Id @GeneratedValue(strategy=GenerationType.AUTO)
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Column(columnDefinition = "BINARY", length = 16)
@Type(type="uuid-binary")
public UUID getUuid() {
return uuid;
}
public void setUuid(UUID uuid) {
this.uuid = uuid;
}
}
注意: @GenericGenerator
已不再需要,因此已被删除。
答案 0 :(得分:1)
对于以下代码,可以使用
public UUID getUuid() {
return uuid == null ? UUID.randomUUID() : uuid;
}
发布此内容为时已晚,但它可能对其他人有帮助。