entity 칼럼 매핑 오류
339
작성한 질문수 1
안녕하세요.
legacy시스템을 querydsl로 바꾸는 작업을 하고 있는데요.
몇몇 칼럼에서 아래와 같은 에러가 일어나 변환 작업에 어려움을 겪고 있습니다.
@Column(name = "a_b_c")
private String abc;
위의 entity a_b_c칼럼을 repository 단위 테스트할 경우 m1_0.a_b_c 칼럼명을 잘가지고 오는데 스프링에서 서블릿을 올려서 테스트 할 경우 아래와 같이 에러가 납니다.
jakarta.servlet.ServletException: Handler dispatch failed: java.lang.NoSuchFieldError: abc
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1096)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:974)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1011)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
Caused by: java.lang.NoSuchFieldError: abc
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343)
칼럼명을 변경하면 해결이 가능하지만 레거시 시스템이므로 칼럼명 변경은 불가능합니다.
관련 내용에 대해 아시는분 이 있으시면 답글 부탁드립니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
님의 문제를 보아하니, @Column 어노테이션을 사용한 커스텀 칼럼명 매핑이 잘 작동하지 않는 상황으로 보입니다. 레거시 시스템의 특정 칼럼 이름을 변경하지 않고 Querydsl로의 전환 작업 중 문제가 발생한 경우, Spring Data JDBC의 @Column 어노테이션을 통해 entity의 프로퍼티 이름과 다른 데이터베이스 칼럼 이름을 매핑할 수 있습니다. 여기에서는 value 요소를 사용하여 매핑합니다. 예를 들어:
class MyEntity {
@Id
Integer id;
@Column("a_b_c")
String abc;
}
위 코드는 MyEntity 클래스의 abc 프로퍼티를 데이터베이스의 a_b_c 칼럼에 매핑하고 있습니다. 이것이 잘 동작하지 않는다면, 몇 가지 확인해야 할 사항이 있습니다:
정확한 칼럼명 사용 확인:
@Column어노테이션에 지정된 칼럼 이름이 데이터베이스의 칼럼 이름과 정확히 일치하는지 다시 한번 확인하십시오.어플리케이션의 설정 확인: 레거시 시스템인 경우, 기존의 설정이 혹시 다른 NamingStrategy를 사용하고 있지 않은지 확인하십시오.
사용 중인 Spring Data JDBC 버전 확인: 사용하고 계신 Spring Data JDBC 버전이 최신 버전인지 확인하십시오. 버전에 따라 지원하는 기능이 다를 수 있습니다.
위의 네 가지 사항을 확인해 보시고 문제가 해결되지 않는 경우, 아래 문서를 참고하여 관련 설정이나 어노테이션 사용법을 다시 확인해 보시는 것이 도움이 될 수 있습니다.
“Spring Data JDBC - Reference Documentation v3.1.5” 관련된 원문 링크:
- Custom column names
변경할 수 없는 레거시 데이터베이스 칼럼 이름에 대한 매핑 문제는 종종 도전적일 수 있으며, 제공된 정보를 기반으로 최대한 도움을 드리려 합니다. 위의 정보를 바탕으로 실마리를 찾으실 수 있기를 바랍니다.
JpaPagingItemReader는 좋은게 없는거야..??
0
25
1
입문 강의 듣고 바로 들어도 괜찮을까요?
0
24
1
리프레시토큰
0
39
1
DB 연결 후 회원가입 시 생성되는 id 번호 질문
0
38
1
로그인 확인
0
65
3
ttl 산정 기준
0
42
1
정처기 2026-3 실기 문의
0
94
2
정처기 실기 3회 컴싸 사용 여부
0
62
1
자바 킴쌤 클래스 기초part2.pdf파일은 어디서 받을 수 있나요?
0
39
1
오타 제보 드립니다.
0
64
2
모의고사 1 회 2번문제 중
0
80
2
26-2 이론문제 재탕
1
61
1
26-2년도 코드문제
0
40
0
26-2 코드문제
0
48
1
15분 48초 질문
0
66
2
26-1년도 이론문제 재탕
0
72
1
26-1년도 코드문제 재탕
0
52
0
이론재탕만 눈치챘어도
0
82
1
25-3년도 이론문제 재탕
0
61
1
25-3년도 코드문제 재탕
0
47
0
출력값 문의
0
61
2
25-2 분기커버리지
0
52
0
25-2 이론 재탕
0
74
1
25-1 이론 재탕
0
59
1





