【问题标题】:SQL Foreign Key Error using Hibernate POJOs使用 Hibernate POJO 的 SQL 外键错误
【发布时间】:2017-02-25 18:45:17
【问题描述】:

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

@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 个表?

【问题讨论】:

  • 您应该发布您尝试插入的两个实体的完整映射,它们具有某种类型的 FK PK 关系。
  • 贴出两个实体的完整映射(sql代码)

标签: java sql sql-server hibernate


【解决方案1】:

您只需要确保首先保留您的 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 );

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 2015-10-29
    • 2016-03-21
    • 2015-07-28
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 2014-12-25
    • 1970-01-01
    相关资源
    最近更新 更多