当前位置: 首页 > 知识库问答 >
问题:

如何添加带注释的外键约束

宇文俊明
2023-03-14

我有一个2个实体父实体子实体,其中子实体引用父实体。这是一个多(子)对一个(父)关系,定义如下:

@MappedEntity
public record ChildEntity (
    @Id Long id,
    String name,
    @Relation(Kind.MANY_TO_ONE) ParentEntity parent)  {
}

@MappedEntity
public record ParentEntity (@Id Long id,  
                            String name) {
}

Micronaut Data在创建架构时执行以下SQL查询:

创建一个表<code>parent_entity</code>(<code>id</code>BIGINT不为空,<code>name</code>VARCHAR(255)不为空);

创建表< code > child _ entity (< code > id BIGINT NOT NULL,< code > name VARCHAR(255)NOT NULL,< code > parent _ id BIGINT NOT NULL);

我希望(或希望)添加外键约束以强制引用完整性,因此parent_id必须始终具有值parentEntity.id

如何在映射实体类(子实体,父实体等)上执行此操作,同时仍然使用Micronaut Data JDBC?(没有Hibernate或JPA等)

共有1个答案

慕容文昌
2023-03-14

您需要使用像flyway这样的数据库迁移工具来创建适当的表。

 类似资料:
  • 我正在尝试使用Hibernate注释为我的数据库表编写一个模型类。 我有两个表,每个表都有一个主键用户和问题。 问题桌。 并且我还有一个表UserAnswer,它有userId和questionId作为来自上面两个表的外键。 但我无法找到如何在UserAnswer表中引用这些约束。 我怎样才能做到这一点呢?

  • 问题内容: 因此,我作为项目需求试图将外键约束添加到数据库中,并且它第一次或在两个不同的表上运行,但是在尝试添加外键约束时,我在两个表上遇到错误。我收到的错误消息是: 错误1215(HY000):无法添加外键约束 这是我用来创建表的SQL,两个有问题的表是和。 问题答案: 要查找特定错误,请运行以下命令: 并查看该部分。 子列的数据类型必须与父列完全匹配。例如,由于是,也需要是,而不是。 另外,您

  • 下面是一个现有的模型,名为: 下面是我试图创建的新模型: 看起来很简单,对吧?所以我进行迁移: 在网上搜索,我只找到了一个关于Django的问题的例子(在创建表时Django MySQL错误),但这并没有帮助。没有迁移到,我也看不出为什么会有迁移,因为我们最近既没有修改这部分,也没有升级任何包。 对任何帮助深表感谢。

  • 我有两张桌子。第一个是人口;第二个是空的。 我希望第二个有一个外键,它引用第一个中的一列。 null 架构: 填充。为空。 不能成为的外键: MySQL没有提供错误的原因;不返回: 我拥有所需的数据库权限。 我已经仔细检查了列(甚至表)是否具有相同的排序规则(字符集不适用于INT列): MySQL无法添加外键约束 MySQL:错误1215(HY000):无法添加外键约束 无法添加外键约束-MySQ

  • 我正在尝试在Laravel中创建外键,但是当我使用迁移表时,出现以下错误: 我的迁移代码如下: 优先级迁移文件 用户迁移文件 任何关于我做错了什么的想法,我现在就想知道,因为我有很多表需要创建,例如用户、客户、项目、任务、状态、优先级、类型、团队。理想情况下,我希望创建使用外键保存此数据的表,即和等。 希望有人能帮助我开始。

  • 问题内容: 我正在尝试通过使用外键来确保表之间的数据一致性,以便DBMS可以检查错误。但是,由于某些原因,我们似乎无法做到这一点。有什么错误,还有替代方法吗?另外,当我填写具有外键的表时,无法填写为外键保留的字段,对吗?另外,外键是否完全视为键? 问题答案: 最可能的问题是此行: classLeader的数据类型为VARCHAR(255)。这有 匹配数据类型 的引用的列… 。当然,表必须存在,列也