要求-在二进制(20)类型的MySQL表中有主键,其中前4个字节表示当前时间戳(以秒为单位的历元),其余16个字节表示类型5(基于名称)UUID(去掉破折号)。
例如57093200aee62cab765950a48ef887bcfe87a065(57093200是历元的十六进制表示),其余是UUID的十六进制表示,不带破折号
我相信这在hibernate 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 {
:
}
这里需要指导吗
在生成器类中,您只需要实现该方法
Serializable generate(SessionImplementor session, Object object)
的标识符生成器接口https://docs.jboss.org/hibernate/orm/3.5/api/org/hibernate/id/IdentifierGenerator.html
(基本上你可以只返回字符串格式,如你所述)
问题内容: 我正在将spring,h2和liquibase与hibernate一起使用,并且试图通过以本博客文章为例为我的实体创建自定义String id生成器,但出现错误: 这是我的SequenceStyleGenerator代码: 我的实体代码: 和liquibase XML: 顺便说一句,有可能避免参数sequence_name,以便hibernate可以自行处理吗? 如果有人可以帮助我,谢
本文向大家介绍mysql把主键定义为自动增长标识符类型,包括了mysql把主键定义为自动增长标识符类型的使用技巧和注意事项,需要的朋友参考一下 1、把主键定义为自动增长标识符类型 在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值。例如: 一旦把id设为auto_increment类型,mysql数据库会自动按递增的方式为主键赋值。 在MS SQLServ
问题内容: 我收到的时候我想改变我的以下异常中的。 我知道我要更改表中的主键。我正在使用JPA注释。 我通过使用以下单个HQL查询解决了此问题: 而不是使用更多的OO方法: 知道差异是什么吗? 问题答案: 我无法想象你为什么要这么做。完全没有 您为什么要更改实体的身份?您还需要更新指向它的其他表中的所有外键。似乎很痛苦,没有收获。您最好将其设置为“业务密钥”(普通属性),并使用更永久的代理密钥。我
When considering portability between databases, another important decision is selecting the identifier generation stratagy you want to use. Originally Hibernate provided the native generator for this
带注释的类中的followig代码可用于两个数据库的自动键生成,但如果主键是自设置的,则会失败。 如果没有@GeneratedValue和@SequenceGenerator注释,则可以手动设置主键,但自动生成无法工作。