我试图在 DB 模型中强制 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
不再需要,因此已被删除。
最佳答案
为此可以使用下面的代码
public UUID getUuid() {
return uuid == null ? UUID.randomUUID() : uuid;
}
发布这个已经很晚了,但它可能会对其他人有所帮助。
关于java - 单个非标识字段中的 Hibernate UUID 生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24511561/