У меня есть приложение с сущностью, например Employee (Таблица EMP), и оно используется в нескольких местах.Теперь спустя долгое время создается реплика (EMP_ARC) для таблицы EMP, и мы должны ссылаться на нее в определенных сценариях.
Поскольку структура таблицы точно такая же, я подумал о повторном использовании объявления POJO.Но я не смог найти способ повторно использовать один и тот же POJO для двух разных объявлений таблиц.(Я видел примеры сопоставления XML для сопоставления одного POJO с несколькими таблицами, но наше приложение использует аннотации и не может найти такую опцию с аннотацией)
Я не могу использовать стратегию наследования, потому что полиморфные запросы снижают производительностьприложение и таблица EMP_ARC должны указываться только при необходимости.
Может кто-нибудь сказать мне, если создание дубликата POJO и сопоставление его с таблицей реплик является единственным решением или доступен любой другой подход.
**Sample Code:**
Table structure for EMP and EMP_ARC (exactly same structure)
EMP_ID LONG
EMP_NAME VARCHAR2(100)
**Existing Java Bean mapped to EMP**
**This entity bean cannot be modified**
//getter and setters omitted
@Entity
@Table(name="EMP")
public class Employee{
@Id
@Column(name="EMP_ID")
Long empid;
@Column(name="EMP_NAME")
String empName;
}
//Scenario 1 Query EMP table
String hql = "from Employee";
//Scenario 2 Query EMP_ARC table -- Like SELECT * FROM EMP_ARC
//Not sure of how to write the HQL using the same Employee POJO.
//Output of this HQL has to be an Employee POJO.
Я хочу сопоставить то же POJO сотрудника с таблицей EMP_ARC, но не могу найти способ.
В качестве альтернативы, если я смогу выборочно включить / отключить полиморфные запросы, я смогу использовать Наследование со стратегией TABLE_PER_CLASS.
--- Обходной путь ---
Чтобы динамически включать или отключать полиморфные запросы, я использую две разные фабрики сессий.
- У меня есть два POJO Employee и EmployeeArc (наследующий Employee).
- Используется стратегия наследования TABLE_PER_CLASS.
- Одна фабрика сессий будет ссылаться только на сущность Employee, а другая фабрика сессий будет иметь сущности Employee и EmployeeArc.
- Когда функция полиморфного запроса не требуется, я буду использовать первую сессиюЗаводской, в противном случае используйте второй.
Если кто-нибудь знает о лучшем решении, пожалуйста, помогите мне решить его лучше.