일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Planned
- 함밥
- 파이썬
- 마라마라빔
- 장고
- codetree
- 실습
- 알고리즘
- SQL
- minimum spanning tree
- DFS
- programmers
- 데이터베이스
- 동적계획법
- Bellman-Ford
- 백준
- 소프트웨어공학
- 그리디알고리즘
- Kruskal
- 종합설계
- DP
- B대면노래방
- 모각코
- 프로그래머스
- 코드트리
- 백트래킹
- django
- 최소스패닝트리
- BFS
- MyPlaylist
- Today
- Total
Leta Learns
함밥 | 220826 본문
#create Participant (그룹 생성 시 참가자 컬럼 생성)
createGroup함수 만든 방식과 같이 하고 있다.
다 작성하고 빌드하는데 아래와 같은 에러가 났다.
Bean annotation 잊지 말자!
#ParicipantServiceImpl
에서 createParticipant 함수를 아래와 같이 작성하고,
@Override
public Optional<Participant> createParticipant(Long groupId) {
Participant participant = new Participant();
participant.setId(groupId);
System.out.println("완");
return participantDAO.create(participant);
}
#GroupServiceImpl
에서 그룹을 만든 후에 createParticipant 함수를 호출하였다. (자세한 코드는 깃헙에..)
@Override
public Optional<Group> createGroup(Long restaurantId, Long leaderId) {
Group group = new Group();
group.setName("");
group.setDate("1970-01-01");
group.setTime("");
group.setSex('F');
group.setAge("");
group.setPersonnel(1);
group.setOptional("");
group.setLeader(leaderId);
group.setRestaurantId(restaurantId);
ParticipantService participantService = new ParticipantServiceImpl(participantDAO);
participantService.createParticipant(group.getId());
System.out.println("participantService = " + participantService);
return groupDAO.create(group);
}
포스트맨에서 api 써서 돌리면
이런 에러가 난다.
java.sql.SQLIntegrityConstraintViolationException: (conn=2223050) Cannot add or update a child row: a foreign key constraint fails (`dtmudywqqttg3fc3`.`Participant`, CONSTRAINT `Participant_FK` FOREIGN KEY (`id`) REFERENCES `Group` (`id`) ON DELETE CASCADE)
=> 참조 테이블에 없는 값을 추가해서 발생한 오류라고 한다.
참조 무결성에 의해서 부모키에 해당하는 값만을 넣을 수 있다.
groupId를 participant 컬럼에 넣어주어야 하는데 이 과정에서 문제가 생긴 것 같다.
해결!
ParticipantService 선언을 createGroup 함수 내부에서 해서 그런 것이었다.
밖으로 빼주었더니 제대로 실행되어 그룹이 만들어지면 참가자까지 만들어진다.
@Service
public class GroupServiceImpl implements GroupService {
private final GroupDAO groupDAO;
private final ParticipantDAO participantDAO;
private final ParticipantService participantService; //이렇게 함수 밖에서 선언
@Autowired
public GroupServiceImpl(GroupDAO groupDAO, ParticipantDAO participantDAO, ParticipantService participantService) {
this.groupDAO = groupDAO;
this.participantDAO = participantDAO;
this.participantService = participantService;
}
///////////////생략////////////////
@Override
public Optional<Group> createGroup(Long restaurantId, Long leaderId) {
Group group = new Group();
group.setName("");
group.setDate("1970-01-01");
group.setTime("");
group.setSex('F');
group.setAge("");
group.setPersonnel(1);
group.setOptional("");
group.setLeader(leaderId);
group.setRestaurantId(restaurantId);
participantService.createParticipant(group.getId());
System.out.println("participantService = " + participantService);
return groupDAO.create(group);
}
}
#그룹 참여
그룹 참여 로직
- 사용자가 그룹 참여 버튼 클릭
- DB에서 해당 그룹의 참가자 컬럼을 찾아 빈 공간 탐색 (sql 쿼리 사용)
- 찾은 빈 공간에 사용자 추가
음 .. 함수를 만들다가 쿼리를 가져오는 작업에서 혼란스러워졌다..
어떤 식으로 출력되는지 확인하기 위해서 일단 실행을 해봤는데
java.lang.NullPointerException: null 에러가 났다.
오늘은 여기까지 하고,, 내일 다시 해야지.
'토이 프로젝트 > 함밥' 카테고리의 다른 글
함밥 | 220825 (0) | 2022.08.25 |
---|---|
함밥 | 220818 (0) | 2022.08.18 |
함밥 | 220813 (0) | 2022.08.13 |
함밥 | 220812 (0) | 2022.08.12 |