본문 바로가기
JAVA

[Spring][JAVA] org.springframework.dao.DuplicateKeyException 에러 해결 방법

by 알기 쉬운 코딩 사전 2023. 8. 10.
반응형

JDBCTest라는 테스트용 main을 만들어 table에 데이터가 추가되는지 확인을 해보려고 했으나 다음과 같은 에러가 나왔습니다.

 

Console 에러 출력 화면

org.springframework.dao.DuplicateKeyException:
java.sql.SQLIntegrityConstraintViolationException: Duplicate entry '500' for key 'role.PRIMARY'

 

에러 발생 이유

기본키 관련 무결성 제약 조건에 위배되는 SQL문이 작성되어 발생합니다.

 

해결 방법

테이블을 조회해 본 결과 기본 키 500을 가지고 있는 데이터가 이미 존재했던걸 확인할 수 있었습니다.

 

수정 전 소스 코드

package kr.or.connect.daoexam.main;

import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

import kr.or.connect.daoexam.config.ApplicationConfig;
import kr.or.connect.daoexam.dao.RoleDao;
import kr.or.connect.daoexam.dto.Role;

public class JDBCTest {
	public static void main(String[] args) {
		ApplicationContext ac = new AnnotationConfigApplicationContext(ApplicationConfig.class);
		
		RoleDao roleDao = ac.getBean(RoleDao.class);
		
		Role role = new Role();
		role.setroleId(500);
		role.setDescription("CEO");
		
		int count = roleDao.insert(role);
		System.out.println(count + "건 입력되었습니다.");
	}
}

 

수정 후 소스코드

package kr.or.connect.daoexam.main;

import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

import kr.or.connect.daoexam.config.ApplicationConfig;
import kr.or.connect.daoexam.dao.RoleDao;
import kr.or.connect.daoexam.dto.Role;

public class JDBCTest {
	public static void main(String[] args) {
		ApplicationContext ac = new AnnotationConfigApplicationContext(ApplicationConfig.class);
		
		RoleDao roleDao = ac.getBean(RoleDao.class);
		
		Role role = new Role();
		role.setroleId(501);
		role.setDescription("CEO");
		
		int count = roleDao.insert(role);
		System.out.println(count + "건 입력되었습니다.");
	}
}

 

수정 후 정상 작동되는 걸 확인할 수 있었습니다.

테이블에 데이터 역시 마찬가지로 추가된 걸 확인할 수 있었습니다.

반응형

댓글