Может ли Hibernate использовать логическое имя для свойства entity, отличного от имени поля?

Скажем, существует объект Hibernate, настроенный с доступом к полю посредством аннотаций. Я хотел бы сопоставить поле класса Java _name, чтобы его логическое имя для Hibernate было name, например, когда оно ссылалось на запросы HQL. Мне нужно это в основном для коллекций.

Предчувствие неправильных предложений: возможность переключения типа "свойство" невозможна; задача не имеет ничего общего с именем физического столбца.

Ответ 1

Основываясь на моем понимании вашего вопроса - Вы можете определить объект как это. Это создаст таблицу спящего режима с именем (NewName_ABC с именем столбца)

@Entity
@Table(name = "NewName_ABC")
public class ABC
{
.
@Column(name = "name")
private string _name;
.
.
}

parallely может использовать Liquibase для создания таблицы.

Ответ 2

Вы имеете в виду это?

@Column(name = "name")
private string _name;

Ответ 3

Вы можете создать второе свойство с другими именами в одном столбце и использовать его в запросах HQL. Но есть ограничение: только одно из этих свойств может быть отображено как вставляемое, обновляемое.

@Column(name="name")
private string name;

@Column(name="name", insertable=false, updatable=false)
private string alsoName;

Ответ 4

Вы можете использовать псевдоним в HQL, как вы используете в SQL. Вам не нужно указывать какие-либо аннотации для этого. Аннотации могут быть добавлены во время запросов:

Идентификатор SELECT из имени _name