java - 添加外键(Lquidbase)

标签 java database

我正在尝试添加一个外键,该外键将引用另一个表中的主键,并且该主键将位于 user_id 列中,但由于某种原因,我收到语法异常

 <changeSet id="add-export_users-table" author="artjom.prozorov">
    <preConditions>
        <not>
            <tableExists tableName="export_users"/>
        </not>
    </preConditions>
    <createSequence sequenceName="export_users_id_seq"/>
    <createTable tableName="export_users">
        <column name="id" type="BIGINT"/>
        <column name="user_id"/>
    </createTable>
    <addNotNullConstraint tableName="export_users" columnName="id"/>
    <addPrimaryKey tableName="export_users" columnNames="id"/>
    <addForeignKeyConstraint baseTableName="export_users"  baseColumnNames="user_id" constraintName="export_users_fk"
                             referencedTableName="users"
                             referencedColumnNames="user_id"/>



  Export class 
       @OneToOne
    @JoinColumn(name = "user_id")
    private UserEntity userEntity;

UserEntity class 
 @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "user_id_seq")
    @SequenceGenerator(name = "user_id_seq", sequenceName = "public.user_id_seq", allocationSize = 0)
    private Long id;

最佳答案

<addForeignKeyConstraint baseTableName="export_users"
    baseColumnNames="user_id"
    constraintName="export_users_fk"
    referencedTableName="users"
    referencedColumnNames="user_id"/>

假设users表的ID是user_id,但由于我在您的UserEntity @Id上没有看到任何注释,我假设它的ID 更简单地称为id

关于java - 添加外键(Lquidbase),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61325239/

相关文章:

java - 为 InputStreamReader 定义此行为的规范在哪里?

java - Eclipse不可逆Dynamic Web Module 4.0选择; Tomcat 9 不支持

mysql - mysql索引中的多列

mysql - 无法弄清楚此表和关系的查询

java - Android:在实体调用 Finalize 时插入数据库

android - 根据 ID 播放声音

Java:Collection-如何创建多列

java - 我的输出只是给出奇怪的字符

javascript - 必需的字符串参数 'text' 不存在

database - 是否有一种优雅的方式来存储双重关系(即用户 1 和用户 2 是 friend )