- 질문 게시판입니다.
Date | 16/09/07 15:39:14 |
Name | YORDLE ONE |
Subject | JPA와 Mariadb관련 질문입니다.. 뻘쭘 (해결했습니다) |
안녕하세요.. 웹개발자하면서 이번에 jpa 환경에서 처음 일을 하게 될 것 같아서 간단한 프로그램 하나를 jpa +mariadb + spring boot 환경으로 만들어보고 있는데요.. 현재 제가 삽질중인 상황이 좀 어이없어서 여쭤보고자 질문올립니다. 일단 쿼리를 하나 예시로 보겠습니다. 1번 쿼리 = insert into code_table (columnA, columnB) values ('A', 'B') // 안됨 2번 쿼리 = insert into `code_table` (`columnA`, `columnB`) values ('A', 'B') // 됨 차이를 아시겠나요. 테이블과 컬럼명에 ` 가 붙어있어야 쿼리가 정상 동작을 합니다. -_-; 근데 문제는 말이죠.... JPA에서 자동으로 쿼리를 생성해줄때 컬럼명을 도메인에서 고스란히 가져다가 쓰는데요. @Entity public class CodeTable { @Id private String columnA; private String columnB; } 이상태의 도메인에서 소스를 돌리면, 1번 쿼리처럼 쿼리가 생성되서 execute됩니다. 그리고 예외가 발생하죠. 그래서 이렇게 해봤습니다. @Entity @Table(name="`code_table`") public class CodeTable { @Id @Column(name = "`columnA`") private String columnA; @Column(name = "`columnB`") private String columnB; } 뭐가 바뀌었는지 보이실까요. @Table과 Column 어노테이션을 추가해서 컬럼명을 맞춰주었는데, 저기에다가 ` 를 붙여놓았습니다. 저렇게 하고 소스를 돌리면 정상적으로 execute가 되고, commit까지 완료되면서 해피엔딩을 맞이할 수 있게 되죠. 그런데.. 제가 구글링하면서 대충 찾아본 다른 개발자 블로거분들 도메인 예제를 보면, 저런 어노테이션을 붙이지도 않을 뿐더러, 만약 붙였더라도 `를 붙이진 않았거든요. 그래서 문득 생각이 든게 `를 필수로 받아들이는 마리아디비쪽이 나쁜거 아닌가?.. 마리아디비 설정을 내가 이상하게 했나?? 라는 생각이 들더군요. 그래서 드디어 질문입니다만 마리아디비에서 insert 등의 쿼리를 칠 때, `와 같은 특수문자로 컬럼명 테이블명 등을 랩핑하지 않아도 되는 설정법을 혹시 아시는 분이 계신지.. 가르침을 주세요.. 혹은 위와 같은 상황을 단순히 피할 수 있는 노하우를 아시는 고수분들.. 가르침을 주십시오 흑흑.. 물론 `로 랩핑해서 코딩하면 기능이야 잘 돌겠지만.. 아무리봐도 이거 이상하잖아요 으아아아 이상한 질문 읽어주셔서 감사합니다.. + 해결 아.. 문제 해결 했습니다. 제가 예시 테이블을 컬럼이 쓸데없이 많은걸로 테스트를 하고 있었는데요. 그중에 예약어가 하나 들어있었던 모양이에요... 컬럼 이름은 order였습니다. order를 다른 이름으로 바꿔주니 정상적으로 잘 실행이 됩니다. 위에는 예시를 위해 columnA, B로 바꿔서 썼었는데.. 결과적으로는 말도안되는 질문이 되어버렸네요 잠깐이라도 읽으셨던 분들께 혼란을 드려서 죄송해요 -_-; 0
이 게시판에 등록된 YORDLE ONE님의 최근 게시물 |