使用 Hibernate POJO 的 SQL 外键错误

OSBLE

我们有以下情况: 我们使用 Java 的 Hibernate 将 POJO-Classes 写入数据库。类注释如下:

@Entity
@Table(name = "dbo.SaveEvents")

写入数据库时,我们得到以下错误(表:dbo.CodeDocuments

警告:SQL 错误:547,SQLState:23000 
2017 年 2 月 6 日下午 2:06:42 org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
错误:INSERT 语句与 FOREIGN KEY 约束“FK_SaveEvents_CodeDocuments”冲突。冲突发生在数据库“OSBLEPlus_eclipse”、表“dbo.CodeDocuments”、“Id”列中。
org.hibernate.exception.ConstraintViolationException:无法
在 org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:112)执行语句

我们试图通过添加以下内容来满足外键约束:@SecondaryTable(name = "dbo.CodeDocuments")但这并不能解决我们的问题。我们也没有找到很多关于如何SecondaryTable正确使用注释的信息。映射 FK <-> PK 如下:

CodeDocuments.sql:
CREATE TABLE [dbo].[CodeDocuments] (
    [Id]    INT         IDENTITY (1, 1) NOT NULL,
    [FileName] VARCHAR (MAX) NOT NULL,
    [Content]  VARCHAR (MAX) NOT NULL,
    CONSTRAINT [PK_CodeDocuments_Id] PRIMARY KEY CLUSTERED ([Id] ASC)
);

SaveEvents.sql:
CREATE TABLE [dbo].[SaveEvents] (
    [Id]        INT         IDENTITY (1, 1) NOT NULL,
    [EventLogId]   INT          NOT NULL,
    [EventDate] DATETIME    NOT NULL,
    [SolutionName] VARCHAR (MAX) NOT NULL,
    [DocumentId]   INT          NOT NULL,
    CONSTRAINT [PK_SaveEvents] PRIMARY KEY CLUSTERED ([Id] ASC),
    CONSTRAINT [FK_SaveEvents_EventLogs] FOREIGN KEY ([EventLogId]) REFERENCES [dbo].[EventLogs] ([Id]),
    CONSTRAINT [FK_SaveEvents_CodeDocuments] FOREIGN KEY ([DocumentId]) REFERENCES [dbo].[CodeDocuments] ([Id])
);

如何使用 Hibernate POJO 又名修复外键错误一次插入 2 个表?

优点

您只需要确保首先保留CodeDocument关联SaveEvents实体所跟随的实体即可:

CodeDocument codeDocument = new CodeDocument();
// set the values 
session.save( codeDocument );

SaveEvents saveEvents = new SaveEvents();
// set the values
saveEvents.setDocument( codeDocument );
session.save( saveEvents );

希望能有所帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用外键的SQL语法错误

来自分类Dev

未正确使用外键的 SQL 错误“未找到父键”?

来自分类Dev

使用SQL / ORACLE的外键

来自分类Dev

在 SQL 中使用外键

来自分类Dev

外键错误SQL Server

来自分类Dev

SQL-外键错误

来自分类Dev

ProgrammingError:1064(42000):您的SQL语法有错误;无法使用外键创建表

来自分类Dev

使用Hibernate Java中的多个表检索POJO查询

来自分类Dev

Genson 不使用用 @Transient 注释的 Hibernate POJO 字段

来自分类Dev

使用Hibernate插入具有主键/外键的行

来自分类Dev

DashDB-使用Hibernate生成外键的问题

来自分类Dev

SQL Server:使用条件创建外键

来自分类Dev

Oracle SQL Developer-使用外键

来自分类Dev

使用外键检索数据的SQL

来自分类Dev

Sql炼金术; 外键错误

来自分类Dev

SQL Server:添加外键错误

来自分类Dev

SQL外键约束格式错误

来自分类Dev

Sql炼金术; 外键错误

来自分类Dev

外键的SQL语法错误

来自分类Dev

创建外键约束的SQL Server错误

来自分类Dev

SQL错误02291-外键问题

来自分类Dev

使用复合键错误地形成了外键约束

来自分类Dev

sql 查询错误外键约束给出错误

来自分类Dev

SQL外键外键

来自分类Dev

Hibernate/JPA 自动创建外键,而不是在多对一关联中使用现有的外键

来自分类Dev

Hibernate生成错误的SQL查询

来自分类Dev

使用Hibernate使用外键查询数据库表(where)

来自分类Dev

使用Hibernate使用外键查询数据库表(where)

来自分类Dev

Hibernate传递POJO对象作为参数,并使用它的属性。是否有可能?