栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在MySQL和Hibernate中使用序列

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在MySQL和Hibernate中使用序列

您在Mysql中没有序列,但是可以使用’TABLE’id生成

@javax.persistence.TableGenerator(    name="EMP_GEN",    table="GENERATOR_TABLE",    pkColumnName = "key",    valueColumnName = "hi"    pkColumnValue="EMP",    allocationSize=20)@Entitypublic class Klass {    @Id    @GeneratedValue(strategy = GenerationType.TABLE, generator=EMP_GEN)    @Column(name = "ID")    private Long id;}

您可能需要

@javax.persistence.TableGenerator [...]
在所有实体中添加代码段

编辑

非常感谢。但是,我们是否可以使用另一种方式而不将其添加到每个实体中?当在数据库上创建表时,如何为DBMS声明ID主键列以自动生成类似的值?–
napoleonit76

不幸的是,我不知道执行此操作的优雅方法:(.。在我的项目中,我们在多个实体中使用一个序列,并且需要在每个类中声明该序列。您可以尝试做一件事(但是我不会(真的很喜欢)是为您所有实体创建一个超类,并且该超类仅包含ID字段和注释。我有在项目中看到过这种感觉的感觉,但我不确定100%确定。

关于告诉数据库使用该策略,我认为这是不可能的。您可以尝试添加触发器并将其应用于架构中的每个表。当您在表中插入新行,从 生成器表中
选择一个值并将其添加到该行时,触发器将触发。老实说,我不知道这是否行得通,如果您有2个并发会话创建行,则我99%确信这将行不通。

您是否可以重新考虑策略,并使用常规的自动递增列作为ID,并将序列号放在表的另一列中?



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/382901.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号