Java 在MySQL中用Hibernate实现二进制主键的自定义IdentifierGenerator
要求-在二进制(20)类型的MySQL表中具有主键,其中前4个字节表示当前时间戳(以秒为单位的历元),其余16个字节表示类型5(基于名称)UUID(去掉破折号) 例如57093200aee62cab765950a48ef887bcfe87a065(57093200为历元的十六进制表示),其余为UUID的十六进制表示,不带破折号 我相信这在Hibernate4.2+中是可能的,但是很难得到一个工作模型Java 在MySQL中用Hibernate实现二进制主键的自定义IdentifierGenerator,java,mysql,hibernate,Java,Mysql,Hibernate,要求-在二进制(20)类型的MySQL表中具有主键,其中前4个字节表示当前时间戳(以秒为单位的历元),其余16个字节表示类型5(基于名称)UUID(去掉破折号) 例如57093200aee62cab765950a48ef887bcfe87a065(57093200为历元的十六进制表示),其余为UUID的十六进制表示,不带破折号 我相信这在Hibernate4.2+中是可能的,但是很难得到一个工作模型 @Entity @Table(name = "demo_table") public class
@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 {
:
}
此处需要指导在生成器类中,您只需要实现该方法
Serializable generate(SessionImplementor session, Object object)
IdentifierGenerator接口的
(基本上,您可以按照描述的格式返回字符串)