Получите имя столбца в jpa

У меня есть фабрика запроса, которая берет имя столбца в качестве атрибута для поиска того столбца. Прямо сейчас я передаю название столбца как строка, таким образом, это - вид hardcoded. Если название изменений столбца в аннотации объекта, та "скрытая зависимость" разбивается.

Существует ли путь в jpa, чтобы получить настоящее имя столбца и иметь его в наличии во время компиляции, таким образом, я могу использовать его в запросах?

7
задан German 27 May 2010 в 13:21
поделиться

1 ответ

Конечно, всегда есть отражение в аннотациях. Предположим, у вас есть типичное определение столбца JPA:

    @Basic(optional = true)
    @Column(name = "MY_COLUMN_NAME_DESC", nullable = true, length = 255)
    public String getDesc() {
        return desc;
    }

Затем проверка метода получения дает значение имени столбца (пример взят из здесь ):

Method method = ... //obtain entity object
Annotation[] annotations = method.getDeclaredAnnotations();

for(Annotation annotation : annotations){
    if(annotation instanceof Column){
        Column myAnnotation = (Column) annotation;
        System.out.println("name: " + myAnnotation.name());
        System.out.println("value: " + myAnnotation.value());
    }
}

Пример предполагает доступ к свойству метода в JPA сущность, но ничто не мешает вам адаптировать ее к уровню поля, применив отражение к полю.

8
ответ дан 7 December 2019 в 03:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: