Cannot add or update a child row: a foreign key constraint

問題內容:

在一個hibernate項目中,爲一個Model類添加一個多對一的配置,在進行功能調試的時候報如下錯誤。

Caused by: com.mysql.jdbc.exceptions.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (t_project_case_main, CONSTRAINT FK_aaxgqh0eu7cwdq1ku8jv2k3db FOREIGN KEY (ATTACH_ID) REFERENCES t_project_case_main (CASE_ID))
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:931)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2941)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1623)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1715)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3249)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1268)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1541)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1455)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1440)

問題分析:

從錯誤日誌中我們發現他提示我們 我們有一個外鍵FK_aaxgqh0eu7cwdq1ku8jv2k3db `t_project_case_main 外鍵id 是ATTACH_ID 但是涉及到的應該是 CASE_ID 纔對。
我有去看了一個項目中的hbm.xml的配置。
內容如下:

        <many-to-one name="attach" class="com.bwol.pm.project.entity.CaseMain" fetch="select">
            <column name="ATTACH_ID" precision="16" scale="0" />
        </many-to-one>
       

我配置class中com.bwol.pm.project.entity.CaseMain根本沒有ATTACH_ID

解決方式:

我想在CaseMain的hbm.xml配置一個Attach的多對一關係 也就是 一個Attach 有多個CaseMain,發現在配置的時候由於複製粘貼的關係忘記修改 class 爲 Attach類的路徑了,具體修改如下:

        <many-to-one name="attach" class="com.bwol.pm.project.entity.Attach" fetch="select">
            <column name="ATTACH_ID" precision="16" scale="0" />
        </many-to-one>

修改後問題成功解決。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章