Hibernate UUID生成器在单个非标识字段中

时间:2014-07-01 13:30:43

标签: java hibernate uuid

我试图在数据库模型中强制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已不再需要,因此已被删除。

1 个答案:

答案 0 :(得分:1)

对于以下代码,可以使用

public UUID getUuid() {
    return uuid == null ? UUID.randomUUID() : uuid;
}

发布此内容为时已晚,但它可能对其他人有帮助。