Промяна на имена на свойства в JPA заявки

Използвам конвенция за добавяне на имена на полета с долна черта. Когато генерирам анотирани класове обекти с такива полета, придържам се към използването на имената на свойства с префикс с долна черта в заявките. Искам да избегна това и да мога да направя:

@Entity
public class Container {

    private String _value;
}

// in a lookup method
executeQuery("from Container where value = ?", value);

Възможно ли е това с JPA като цяло или с Hibernate в частност?


Актуализация: Все още се опитвам да си спомня защо, но имам нужда това да бъде пояснено в полетата, а не в гетърите.


person Robert Munteanu    schedule 01.06.2009    source източник


Отговори (3)


Можете да коментирате гетъра:

@Entity
public class Container {

    private String _value;

    @Column
    public String getValue()
    {
        return _value;
    }

    public void setValue( String value )
    {
        this._value = value;
    }

}
person mtpettyp    schedule 01.06.2009
comment
Вероятно обаче не е опция, ако класът е генериран. - person skaffman; 01.06.2009

Може би бихте могли да напишете подкласове на вашите генерирани класове обекти, които имат getter методи върху тях, и след това да конфигурирате мениджъра на обекти да използва getter/setter достъп вместо това, ако полевият достъп? Тогава вашите гетери/сетери могат да имат всяко име, което ви харесва.

person skaffman    schedule 01.06.2009

Разгледайте NamingStrategy. Би било доста лесно да разширите DefaultNamingStrategy и да замените метода columnName, за да премахнете първото долно черта (ако е там).

person Maarten Winkels    schedule 10.06.2009
comment
Сигурни ли сте, че това се занимава с имена на свойства, а не с имена на колони в базата данни? В javadoc се посочва, че това е „Набор от правила за определяне на физическите имена на колони и таблици, дадени на информацията в документа за картографиране.“ - person Robert Munteanu; 10.06.2009
comment
Хм, прав си. Hibernate се занимава само със съпоставяне на собственост (или поле) към база данни. Няма „друго“ име, което можете да използвате. Това решение ще ви даде правилни имена в базата данни, но имената на вашите свойства (в HQL или Criteria заявки) все още ще имат долната черта. Мисля, че можете да използвате само другото предложение и да използвате getter за това. - person Maarten Winkels; 11.06.2009