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;
}
}
반응형