inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

entity 칼럼 매핑 오류

327

스프링맨

작성한 질문수 1

0

안녕하세요.

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)

 

칼럼명을 변경하면 해결이 가능하지만 레거시 시스템이므로 칼럼명 변경은 불가능합니다.

관련 내용에 대해 아시는분 이 있으시면 답글 부탁드립니다.

jpa querydsl entity java

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 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 칼럼에 매핑하고 있습니다. 이것이 잘 동작하지 않는다면, 몇 가지 확인해야 할 사항이 있습니다:

  1. 정확한 칼럼명 사용 확인: @Column 어노테이션에 지정된 칼럼 이름이 데이터베이스의 칼럼 이름과 정확히 일치하는지 다시 한번 확인하십시오.

  2. 어플리케이션의 설정 확인: 레거시 시스템인 경우, 기존의 설정이 혹시 다른 NamingStrategy를 사용하고 있지 않은지 확인하십시오.

  3. 사용 중인 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