要求-要在类型为binary(20)的MySQL表中具有主键,其中前4个字节表示当前时间戳(以秒为单位的时间),其余16个字节表示Type5(基于名称)的UUID(用破折号分隔)。

例如57093200aee62cab765950a48ef887bcfe87a065(57093200是纪元的十六进制表示),其余是UUID的十六进制表示,不带破折号

我相信这对于休眠4.2+来说是可能的,但是努力获得一个可行的模型

@Entity
@Table(name = "demo_table")
public class Request implements Serializable {

    @Id
    @GenericGenerator(name = "sequence_id_generator", strategy = "com.company.id.Generator")
    @GeneratedValue(generator = "sequence_id_generator")
    @Column(name="id")
    private String id;

    :
}

public class Generator implements IdentifierGenerator {
     :
}


这里需要指导

最佳答案

在Generator类中,您只需要实现方法

Serializable generate(SessionImplementor session, Object object)


IdentifierGenerator接口的
https://docs.jboss.org/hibernate/orm/3.5/api/org/hibernate/id/IdentifierGenerator.html
(基本上,您可以返回按照您描述的格式格式化的String)

10-06 05:43