Учитывая следующий сценарий:Как подкласс класса сущности Hibernate эффективно заменяет родителя?
- Проект с использованием рамки
- Структура определяет основные классы сущностей (используется для регистрации, управления пользователями и т.д.)
- Проект имеет применение конкретных классов сущностей.
Я хочу подклассифицировать класс фреймворка таким образом, чтобы он не нуждался в изменениях кода рамки и схемы конкретной базы данных (кроме любых ограничений, которые могут быть внесены дополнительными сопоставлениями).
Вот упрощенная структура класса:
package com.example.parent;
@Entity
@Table("entities")
public class ExampleEntity {
@Id
@GeneratedValue
protected Integer id;
protected String name;
}
И специфическое расширение применения:
package com.example.child;
@Entity
public class ExampleEntity extends com.example.parent.ExampleEntity {
@OneToMany
@JoinColumn
protected Set<OtherEntity> otherEntities;
}
Как вы можете видеть, это только добавляет дополнительное отображение к определенному классу сущностей приложения. Это не будет работать с Hibernate 4.3.11 из коробки. Он попытается создать столбец дискриминатора (dtype
), который не нужен, и IMHO здесь не требуется.
Я хочу, чтобы это было как можно более прозрачным (т. Е. Ничего не меняя на стороне каркаса) и без какого-либо дополнительного ручного сопоставления/заливки в приложении. Фактически, я хочу обмануть Hibernate для загрузки только экземпляров com.example.child.ExampleEntity
без рамки, даже замечая.
TL; DR
Как обмануть Hibernate в погрузочных единиц из entities
таблицы как экземпляры com.example.child.ExampleEntity
?
Я думаю, что исходный вопрос сказал, как заставить его работать _without_ изменение классов фреймворка, но я думаю, вы предлагаете изменить класс framework, добавив аннотацию @Inheritance. –