gpt4 book ai didi

java - SQL 序列 : Hibernate and Liquibase

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:33:30 24 4
gpt4 key购买 nike

我对数据库开发很陌生,所以也许这个问题并不完全正确,但如果有人能让我更清楚一点,我将不胜感激……我已经阅读了所有关于序列的内容,以及如何他们比身份更受欢迎。我有一个假设性的问题。如果我要使用序列与 Hibernate(数据插入)和 Liquibase(模式创建)一起生成我的 PK,那么定义序列的正确位置是什么?

例如:类级别的序列生成。

用户.java

@Entity
@Table(name = "USER")
public class User {

@Id
@SequenceGenerator(name = "USER_SEQ", sequenceName = "USER_SEQ")
@GeneratedValue(strategy = SEQUENCE, generator = "USER_SEQ")
@Column(name = "ID")
private Long id;

// other fields
}

或其他示例:模式级别的序列生成。

changelog.xml

<changeSet author="wesleyy">
<createSequence catalogName="cat"
cycle="true"
incrementBy="1"
maxValue="1000"
minValue="10"
ordered="true"
schemaName="public"
sequenceName="user_seq"
startValue="1"/>
</changeSet>

是否需要在Liquibase和Hibernate中都定义一个序列?两者到底有什么区别?

最佳答案

通过 User 类中的行

@SequenceGenerator(name = "USER_SEQ", sequenceName = "USER_SEQ")
@GeneratedValue(strategy = SEQUENCE, generator = "USER_SEQ")

你说要 hibernate :对于插入数据库的每个对象 User,从名为 USER_SEQ 的序列中为主键赋予新值。

通过将描述的 changeSet 添加到 liquibase xml 脚本中,您对 liquibase 说:如果此 changeSet 尚未应用于数据库,则下次在名为 user_seq 的数据库序列中创建。

换句话说,您在 liquibase 脚本中创建序列,并在 User 类的代码中使用它。

关于java - SQL 序列 : Hibernate and Liquibase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48571685/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com