Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在MySQL中用Hibernate实现二进制主键的自定义IdentifierGenerator_Java_Mysql_Hibernate - Fatal编程技术网

Java 在MySQL中用Hibernate实现二进制主键的自定义IdentifierGenerator

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

要求-在二进制(20)类型的MySQL表中具有主键,其中前4个字节表示当前时间戳(以秒为单位的历元),其余16个字节表示类型5(基于名称)UUID(去掉破折号)

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

我相信这在Hibernate4.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 {
     :
}

此处需要指导

在生成器类中,您只需要实现该方法

Serializable generate(SessionImplementor session, Object object)
IdentifierGenerator接口的
(基本上,您可以按照描述的格式返回字符串)