Есть ли способ заставить Play Framework и JPA использовать подчеркивания в именах столбцов? - PullRequest
8 голосов
/ 27 апреля 2011

Я пытаюсь построить Play!приложение работает с существующей базой данных, где все столбцы имеют подчеркивания для разделения слов.Это означает, что я должен поместить аннотацию @Column в каждое поле, чтобы указать другое имя.Есть в любом случае, чтобы получить Play!использовать подчеркивания по умолчанию?

Ответы [ 3 ]

14 голосов
/ 27 апреля 2011

Если Play использует Hibernate, как предлагают другие ответы, вам придется реализовать пользовательский NamingStrategy.

Вот пример NamingStrategy, который преобразует все имена столбцов из нижнего верблюда в нижний регистр с подчеркиванием, используя Гуава :

public class CustomNamingStrategy extends ImprovedNamingStrategy {

    private static final long serialVersionUID = -306957679456120781L;

    @Override
    public String columnName(final String columnName) {
        return CaseFormat.LOWER_CAMEL
                         .to(CaseFormat.LOWER_UNDERSCORE, columnName);
    }
}

Настройте его так:

добавить следующую строку в application.conf для настройки NamingStrategy

hibernate.ejb.naming_strategy=<your naming strategy classname>

Справка:

1 голос
/ 08 января 2013

Данное решение прекрасно работает, но, как указано в комментариях, ImprovedNamingStrategy делает это, поэтому нет необходимости использовать Guava.

Улучшенная стратегия именования, которая предпочитает встроенные подчеркивания смешанным имена случаев

Вы можете просто добавить hibernate.ejb.naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy в свой application.conf (протестировано в Play! Framework 1.2.5)

0 голосов
/ 27 апреля 2011

Хорошо, если я правильно прочитал документ, инфраструктура воспроизведения использует Hibernate в качестве реализации JPA.AFAIK, нет никакого способа изменить стандартное именование Hibernate, поэтому вам придется добавить аннотации или предоставить имена столбцов в XML-файле сопоставления.

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