Spring

Spring - JPA Entity에서 @Column 필드 리스트로 만들기

codeManager 2024. 2. 13. 20:23
반응형

 

JPA Entity에서 @Column 어노테이션은 객체 필드와 DB 테이블 컬럼을 맵핑합니다.

 

@Table(name = "entity")
public class Entity {
    @Column(name = "id")
    private Long id;

    @Column(name = "name")
    private String name;

    @Column(name = "age")
    private Long age;

}

 

 

 

Entity 클래스에 매핑된 모든 컬럼명을 나열하려면 Java Reflection을 사용하여 클래스 필드에 액세스한 다음 @Column 주석이 있는지 확인할 수 있습니다.

 

 

 

방법은 다음과 같습니다.

 

1. 클래스의 모든 필드를 가져옵니다.
2. 각 필드에 @Column annotation이 있는지 확인하세요.
3. annotation이 있는 경우 annotation에서 열 이름을 추출합니다.

 

import javax.persistence.Column;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;

public class ColumnEnumerator {

    public static void main(String[] args) {
        List<String> columnNames = getColumnNames(Entity.class);
        columnNames.forEach(System.out::println);
    }

    public static List<String> getColumnNames(Class<?> clazz) {
        List<String> columnNames = new ArrayList<>();
        Field[] fields = clazz.getDeclaredFields();

        for (Field field : fields) {
            Column column = field.getAnnotation(Column.class);
            if (column != null) {
                // If name is not specified in the annotation, use the field name
                String columnName = column.name().isEmpty() ? field.getName() : column.name();
                columnNames.add(columnName);
            }
        }

        return columnNames;
    }
}
반응형