전체 글 (54) 썸네일형 리스트형 [Springboot] 롤문철 업데이트 기능 + @DynamicUpdate 이전 프로젝트에서는 프론트에서 변경되지 않은 부분도 한번 더 보내서 다시 저장을 하면됐는데, 이번에는 프론트에서 변경되는 부분만 보내주는 걸로 협의했다. JudgementController@Operation(summary = "롤문철 수정", description = "dto중 변경된 값만 업데이트") @PutMapping("/update/{id}") public ResponseEntity update_judgement(@RequestHeader(value = "Authorization") String token, @PathVariable Long id, @RequestBody JudgementUpdateDTO judgementUpdateDTO){ String access_toke.. [Mysql] orphanRemoval vs CascadeType.REMOVE match_id로 Riot API에 검색을하고 DB에 저장을 해당 게임의 정보를 저장해야한다. 한 게임에 10명의 플레이어가 있고 한 플레이어당 저장해야하는 정보가 20개가 넘는다. 만약 하나의 Entity에 모두 저장하려면 플레이어 외에 게임 정보를 포함해 200개 이상의 컬럼이 필요해진다. 그래서 Game과 Player의 테이블을 분리했다. Game@Entity@Getter @Setter@AllArgsConstructor@NoArgsConstructor@Builderpublic class Game { @Id @Column(name = "game_id") @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; .. [Springboot] mysql List, null 에러 @Builder.Default Cannot invoke "java.util.List.add(Object)" because "this.red" is null오류 ㅠㅠ @OneToMany(mappedBy = "game", cascade = CascadeType.ALL, orphanRemoval = true) List red = new ArrayList();엔티티 내에 이런 코드가 있다. 인터넷 검색시builder 메서드 사용시, List 필드를 초기화 해줘야한다. (.컬럼(new ArrayList()) 이런 식으로) 좀 더 편한 방법을 찾아보니@Builder.Default 애노테이션을 붙여주면, builder 패턴으로 인스턴스 생성시, 지정한 값으로 초기화 시켜주는 방법이다. @OneToMany(mappedBy = "game", .. [스프링부트] Querydsl 쿼리문 작성 (닉네임 공백, 대소문자) 닉네임을 검색해서 정보를 받아올 때, 처음에 해당 닉네임이 DB에 있는지 찾아보고 없으면 라이엇API를 통해 가져오는 코드를 작성 중이다. 처음에는 JPA로 findByNIckname을 사용했는데, 하다보니 검색을 할 때 공백을 잘못 작성하면 DB에서 찾지 못하는 현상이 발생했다.그래서 쿼리문을 작성했다. [변경 전 코드]@Repository@Transactionalpublic class RiotUpgradeRepository { private final EntityManager em; public RiotUpgradeRepository(EntityManager em) { this.em = em; } public Optional findByNickname(String n.. [Swagger] Failed to fetch (http → https) Swagger를 로컬에서 연결하면 잘 접속되는데, 도메인으로 접속시 오류가 발생한다. Request URL이 http://~으로 돼있는데, 내 도메인은 https여서 오류가 발생하는 것 같다. [변경 전 코드] @Bean public OpenAPI openAPI1(){ Info info = new Info() .title("Lolonoa 프로젝트") .version("v3") .description("목표: 3달 안에 Lolonoa 프로젝트 완성시키기 2023.07.24~"); return new OpenAPI() .components(new Components.. [SpringBoot] gson 추가 후 오류 + 해결 build.gradle에 implementation 'com.google.code.gson:gson:2.8.5';추가 후, 로그인 할 때 오류 발생 로그인 후 dto를 생성해서 json형식으로 반환하는 builder에서 오류가 발생한 것으로 보인다.해당 서비스 위에@EnableAutoConfiguration(exclude = {org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration.class})설정을 해주니 잘 작동하나했지만.. 이걸 해주면 gson을 사용하던 컨트롤러가 잘 작동되지않는다.gson을 사용하면 순서가 유지된다는 장점이 있지만, 우리 프로젝트에서는 그렇게 중요하지않아서 implementation group: 'com.google.. [Riot Developer] 스프링부트에서 Riot API로 데이터 추출 닉네임으로 해당 유저의 정보 가져오기 Controller @PostMapping("/riot/summonerByName") public Summoner callSummonerByName(@RequestParam String summonerName){ summonerName = summonerName.replaceAll(" ","%20"); Summoner apiResult = riotService.callRiotAPISummonerByName(summonerName); return apiResult; }닉네임 입력시 해당 유저의 정보를 끌어옴 + 현재는 profileIconId는 사용하지 않을 것 같아서 받아오지 않는데, 나중에 사용할거면 추가할 예정 Se.. [SpringBoot] 이메일 인증 구현 목표: 회원가입할 때 유저가 작성한 이메일에 인증코드를 전송하고 redis에 그 코드를 저장해 입력된 코드와 비교한다. 이메일 인증코드를 redis에 저장하여 비교하는 방식 or 토큰을 포함한 링크를 전송해 사용자가 해당 링크를 클릭했을 때 토큰이 일치하면 완료 처리하는 방식을 할지 고민하다 전자를 선택했다.. 다음에는 후자 방식으로 해봐야겠다..! 1. 해당 이메일 인증 코드 전송하기 build.gradle/*SMTP*/ implementation 'org.springframework.boot:spring-boot-starter-mail' application.ymlspring: mail: host: smtp.gmail.com port: 587 username: ming67.. 이전 1 ··· 3 4 5 6 7 다음