Использование информации о типе свойства Hibernate NamingStrategy - PullRequest
2 голосов
/ 04 мая 2009

Я пишу Hibernate NamingStrategy для нашей схемы.

Наша старая схема (по какой-то причине!) Включает информацию о типе в именах столбцов Например:

strproperty
intcustomer

Я реализую следующий метод из интерфейса NamingStrategy:

public String propertyToColumnName(String propertyName)

Я хотел бы знать тип Java свойства выше, чтобы я мог реализовать нашу стратегию именования так, чтобы:

public String getProperty() {
    return this.property()
}

будет автоматически отображаться в strproperty.

Ради аргументов скажем, что я бы хотел, чтобы это работало (я знаю, что этот метод не существует):

public String propertyToColumnName(Object propertyName, Class propertyType) {
    if (propertyType instanceof String) {
        return "str" + propertyName;
    } else {
        return "int" + propertyName;
    }
}

Есть ли способ определить тип свойства Java из ловушек соглашения об именах в Hibernate?

Заранее спасибо.

1 Ответ

1 голос
/ 04 мая 2009

Не думаю, что интерфейс спроектирован с учетом этого - на первый взгляд кажется, что нет никакого способа узнать, к какому классу обращается вызывающая функция propertyToColumnName () о

Однако я отмечаю, что в javadocs для propertyToColumnName () сказано, что он возвращает «... имя столбца для выражения пути свойства ». Возможно, стоит изучить, что String передается этому методу с помощью Hibernate: если он на самом деле полностью определен с именем класса, тогда вы можете проанализировать имя класса и использовать отражение в этом классе, чтобы определить тип свойства.

Кроме того, не забывайте, что вы всегда можете указывать имена столбцов непосредственно в файлах сопоставления (или, я думаю, в ваших аннотациях, если вы их используете):

что может быть более простым подходом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...