entity 칼럼 매핑 오류
327
작성한 질문수 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
변경할 수 없는 레거시 데이터베이스 칼럼 이름에 대한 매핑 문제는 종종 도전적일 수 있으며, 제공된 정보를 기반으로 최대한 도움을 드리려 합니다. 위의 정보를 바탕으로 실마리를 찾으실 수 있기를 바랍니다.
kafka 이벤트 발행 실패 시 at-least-once를 보장하는 방법이 궁금합니다.
1
17
1
이론 공부법 요약본 버전 업데이트 문의
0
10
1
domain에 @Entity 와 Repository를 함께 둔 이유가 궁금합니다
1
14
1
해당 프로젝트를 똑같이 따라하려니 spring installer가 버전이 17부터 가능하네요.
0
7
1
Part 2 듣기전 복습하던 중, 아키텍처에 관한 질문이 있습니다.
0
22
2
테스트는 인터페이스를 대상으로 만드는것에 대해 궁금한 점이 있습니다.
0
11
1
Jib 이미지 빌드에서 docker credential 관련으로 이슈가 있다면
1
54
1
리뉴얼 시기
0
28
2
스크립트에 대해 질문 있습니다.
1
43
1
같은 사용자가 연속된 중복 호출할 경우 어떻게 되는지 궁금합니다!
2
37
1
조건 검색 질문
0
31
1
JPA 엔티티로 만들었다고 기술종속이 아닌지에 대한 질문
0
45
3
클로드코드 명령어-대화&세션관리 수업 자료
0
37
1
정처기 필기 준비할때 이 이론을 다시 외워도 될까요?
0
51
2
PlatformTransactionManager, ResourcelessTransactionManager 질문
1
56
2
자료 한번에 다운받기
0
28
1
스프링 빈 등록 방법 2가지 다 알아야하는 이유
0
53
1
mybatis 를 이용한 crud에서 insert에서 resultType='long" 이라고 하셨는데요,
0
24
1
댓글 삭제 로직에서 동시성 문제 발생 가능성
0
34
1
설계 트레이드 오프 링크 접속 안됨
0
81
2
테스트 질문, 어떤것을 사용할것인것에 대해서
0
40
1
Shape 클래스 실습 코드 피드백 요청드립니다
0
40
2
재고 감소와 쿠폰 발급은 왜 서로 다른 방식으로 동시성을 제어하나요?
0
52
2
깃허브주소 궁금합니다.
0
35
2





