Java 如何解决这个问题;无法添加或更新子行:外键约束失败;在爪哇
我在数据库中有一个名为“EventUserRelation”的表,它有一个primery键(EventUserId)和两个外键(EventId和TestUserId)。当我尝试在“EventUserRelation”表中添加或更新详细信息时,我得到的结果是“无法添加或更新子行:外键约束失败”。如何修复此错误请帮助我 AddEventUserRelationMapping和updateEventUserRelationList方法如下所示Java 如何解决这个问题;无法添加或更新子行:外键约束失败;在爪哇,java,mysql,Java,Mysql,我在数据库中有一个名为“EventUserRelation”的表,它有一个primery键(EventUserId)和两个外键(EventId和TestUserId)。当我尝试在“EventUserRelation”表中添加或更新详细信息时,我得到的结果是“无法添加或更新子行:外键约束失败”。如何修复此错误请帮助我 AddEventUserRelationMapping和updateEventUserRelationList方法如下所示 public int addEventUserRealt
public int addEventUserRealtionMapping(ArrayList<UserBO> userBOs, long eventId) throws UserServiceException {
List<EventUserRelationDO> totalAddedCount;
ArrayList<UserDO> userDOs = new ArrayList<>();
try {
for (UserBO userBO : userBOs) {
UserDO userDO = mapper.mapUserBOToDO(userBO, new UserDO());
userDOs.add(userDO);
}
totalAddedCount = eventDAOImpl.addEventUserRelationMapping(userDOs, eventId);
EventBO eventBO = getEventByEventId(eventId);
MessageBO messageBO = new MessageBO();
messageBO.setEventId(eventBO.getEventId());
messageBO.setEventTitle(eventBO.getText());
messageBO.setMessage(eventBO.getText());
messageBO.setTestUserId(eventBO.getTestUserId());
messageBO.setMessageType(IRingeeConstants.MESSAGE_TYPE_INVITATION);
if (totalAddedCount.size() == userDOs.size()) {
manageMessageService.sendMessageToGroup(userBOs, messageBO);
}
} catch (UserDataException dExp) {
throw new UserServiceException(" exception while adding user relationship for eventId " + eventId, dExp);
}
return totalAddedCount.size();
}
public void updateEventUserRelationList(EventBO eventBO, long eventId) throws UserServiceException {
List<EventUserRelationDO> eventUserRelationDOs = mapper.mapEventUserRelationBOToDO(eventBO.getEventUserRelationBOs(), new ArrayList<EventUserRelationDO>());
try {
for (EventUserRelationDO eventUserRelationDO : eventUserRelationDOs) {
eventDAOImpl.updateEventUserRelationMap(eventUserRelationDO, eventId);
}
} catch (UserDataException dExp) {
throw new UserServiceException(" exception while update event user relation for event user id="+eventBO.getEventId(), dExp);
}
}
您试图更新的
test\u user.test\u user\u ID
中是否存在test\u user\u ID
中的条目?我有一个“testuser”表,因为我有一个ID,它是该表的主要键。
public void addEventUserRealtionMapping() {
ArrayList<UserBO> userBOs = new ArrayList<>();
EventBO eventBO = getEventBO();
UserBO userBO = getUserBO();
userBOs.add(getUserBO1());
try {
manageUserServiceImpl.addUser(userBO);
eventBO.setRingeeUserId(userBO.getTestUserId());
manageEventServiceImpl.addEvent(eventBO);
int addedTotalCount = manageEventServiceImpl.addEventUserRealtionMapping(userBOs, eventBO.getEventId());
Assert.assertEquals(userBOs.size(), addedTotalCount);
} catch (UserServiceException e) {
e.printStackTrace();
Assert.fail();
}
}
public void testUpdateEventUserRealtionMapping() {
ArrayList<UserBO> userBOs = new ArrayList<>();
EventBO eventBO = getEventBO();
UserBO userBO = getUserBO();
userBOs.add(getUserBO1());
try {
manageUserServiceImpl.addUser(userBO);
eventBO.setRingeeUserId(userBO.getTestUserId());
manageEventServiceImpl.addEvent(eventBO);
manageEventServiceImpl.addEventUserRealtionMapping(userBOs, eventBO.getEventId());
manageEventServiceImpl.updateEvent(eventBO);
try {
manageEventServiceImpl.updateEventUserRelationList(eventBO, eventBO.getEventId());
} catch (UserServiceException e) {
e.printStackTrace();
}
System.out.println("EVENT USER RELATION UPDATED SUCCESSFULLY");
} catch (UserServiceException e) {
e.printStackTrace();
}
}
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (`testapp_dev`.`event_user_relation`, CONSTRAINT `FK_EVT_TEST_USER_ID` FOREIGN KEY (`TEST_USER_ID`) REFERENCES `test_user` (`TEST_USER_ID`))
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1041)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4190)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4122)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2818)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2157)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2460)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2377)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2361)
at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:916)
at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:909)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:644)