> H2数据库的Dev环境
> Postgres的产品环境
>我有一个实体“站”,有两个字段“id”和“name”
>创建一个liquibase脚本,用于导入“station”表中的字典
INSERT INTO站(名称)VALUES(‘Adygeya’)没有ID定义
>尝试在开发环境中添加工作站 – 好的
>尝试在prod上添加工作站 – Hibernate尝试添加具有重复ID的新工作站
为什么?
我的研究表明,只有postgres和oracle在初始方案中jhipster创建了一个新的sequince“hibernate_sequence”,用于创建新实体.
所以我通过为我的实体ID生成规则添加特定的序列名来解决这个错误的行为
@Id @GeneratedValue(strategy = GenerationType.AUTO,generator = "station_gen") @SequenceGenerator(name = "station_gen",sequenceName = "station_id_seq") private Long id;
现在我只有3个问题:
>为什么JHipster使用一个sequince为postgres和oracle的所有表?
>它在哪里配置?
>我做错了什么?
解决方法
这是因为具有GenerationType.AUTO的Hibernate hilo算法的历史和默认行为. MysqL不支持顺序,所以JHipster需要使用这个愚蠢的算法
JHipster团队找到了解决问题的正确解决方案.解决方案是对所有数据库使用GenerationType.SEQUENCE,但对MysqL使用GenerationType.IDENTITY.此提交中的所有详细信息https://github.com/jhipster/generator-jhipster/commit/4516b4ff4d49a96a75fd963b0c7667f198bd9b79
这样我现在也将配置我的实体.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。