Может ли 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