troubleshooting

@Column 어노테이션 내 프로퍼티에 backtick 사용시 값을 못읽는 문제

예약어를 컬럼명으로 사용하는 경우 그대로 사용할 수 없으므로 백틱 문자를 포함함.

  • MappingR2dbcConverter#readValue(@Nullable Object value, TypeInformation<?> type) 여기까지 디버깅했으나 value 값이 null 로 들어옴.

  • backtick을 사용하지 않으면 정상 동작하나 DB 예약어일 경우 어노테이션만으로 해결 불가

  • io.r2dbc.spi.Row 에서 값을 가져오지 못하는 이슈

함수 호출 순서

  1. MappingR2dbcConverter#read(RelationalPersistentEntity<R> entity, Row row, @Nullable RowMetadata metadata)

  2. MappingR2dbcConverter#read(createInstance(Row row, @Nullable RowMetadata rowMetadata, String prefix, RelationalPersistentEntity<S> entity)

  3. KotlinClassGeneratingENtityInstantiator#extractInvocationArguments(@Nullable PreferredConstructor<? extends T, P> preferredConstructor, ParameterValueProvider<P> provider)

  4. BasicRelationalConverter#getParameterValue(Parameter<T, P> parameter)

  5. MappingR2dbcConverter#readValue(@Nullable Object value, TypeInformation<?> type)

    • 이 함수에 value 파라미터 값이 null 로 들어옴

Projection

  • 조회시 Entity 객체가 있는데, 이를 사용하면 모든 컬럼을 조회하니 부담이 될 수 있음

  • 특정 컬럼만 조회하고 싶다면 프로젝션 인터페이스를 사용