[SpringBoot/JPA Hibernate] 예약어 컬럼명 에러 해결(백틱 적용하기) / You have an error in your SQ트러블슈팅2023. 6. 3. 05:27
Table of Contents
728x90
728x90
에러 메세지
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near
원인
분명 틀린 것이 없는데 어디가 잘못됐나 계속 살펴봤다.
친구요청 보내는 로직도 확인하고
@Transactional
@Override
public String friendReq(FriendReqDTO dto) {
if(dto.getFrom().equals(dto.getTo())) return "본인에게 친구요청을 보낼 수 없습니다";
else {
FriendReqResEntity req = new FriendReqResEntity();
req.setFrom(dto.getFrom());
req.setTo(dto.getTo());
req.setStatus("X");
req.setCreate_date(LocalDateTime.now());
friendReqResRepository.save(req);
return "완료";
}
}
엔터티도 확인하고
package com.uu.uni.user.entity;
import java.time.LocalDateTime;
import groovy.transform.builder.Builder;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@Table(name = "FriendReqRes")
@Entity
public class FriendReqResEntity {
@Builder
public FriendReqResEntity(Long idx, String from, String to, String status, LocalDateTime create_date) {
this.idx = idx;
this.from = from;
this.to = to;
this.status = status;
this.create_date = create_date;
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long idx;
@Column(length = 40, nullable = false)
private String from;
@Column(length = 40, nullable = false)
private String to;
@Column
private String status;
@Column
private LocalDateTime create_date;
}
보내는 곳도 확인하고
function friendReq(req_nn, res_nn){
$.ajax({
url : '/users/friends',
method : 'post',
data : {"from" : req_nn, "to" : res_nn},
success : function(msg){
console.log(msg);
}
})
}
음 도대체 어디가 잘못된거지 생각하다가
테이블을 컬럼명을 FROM TO로 해가지고 백틱을 썼던 것이 기억낫다 ;;;
해결
1. hibarnate 설정 추가
application.properties or yml에 설정하기
//properties
spring.jpa.properties.hibernate.auto_quote_keyword=true
//yml
spring:
jpa:
properties:
hibernate:
auto_quote_keyword: true
2. @Column에 name값 추가
위의 엔터티를 예시로
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long idx;
@Column(length=40, nullable=false, name="`from`")
private String from;
@Column(length=40, nullable=false, name="`to`")
private String to;
@Column
private String status;
@Column
private LocalDateTime create_date;
두 가지 경우 모두 잘 되었다.
실수를 줄이자
728x90
300x250
@mag1c :: 꾸준히 재밌게
2023.04 ~ 백엔드 개발자의 기록
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!