And*_*der 8 java sql hibernate hql
我在hibernate中使用此代码.
@Id @GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="RightID", unique=true, nullable=false)
Run Code Online (Sandbox Code Playgroud)
问题是,当我删除一行时,'RightId'不会按顺序保留.我想要类似的东西,hibernates应该检查id,如果缺少一些id值,它必须将该值赋予'RightsId'否则继续正常
Pri*_*shi 10
我不认为在hibernate中有任何这样的选择.您也可以尝试以下策略选项,而不是AUTO:
GenerationType.TABLE - 持久性提供程序使用数据库表来管理密钥.
GenerationType.SEQUENCE - 持久性提供程序使用数据库序列进行密钥生成.数据库必须支持Sequences
另一点:他们可能没有提供这样的选择,因为它也会降低性能.对于每个插入,它必须搜索整个ID列.您可以想象它会对性能产生多大影响.
数据库不在乎序列中是否有空洞。同样,总的来说,更改应用程序设计是可能的,而且很可能是更容易的更改,这样它就不会期望ID值列表不包含漏洞。
如果出于某种奇怪的原因而迫使这种设计,则必须使用自定义生成器。可以通过以下问题找到实现的详细信息:Hibernate ID Generator