Hibernate multimapping - отображает таблицы в одну сущность - PullRequest
0 голосов
/ 24 апреля 2018

У меня есть приложение весенней загрузки, и я использую hibernate для загрузки сущностей из БД PostgreSQL. У меня много таблиц с одинаковой структурой (столбцы: отметка времени TIMESTAMP, DOUBLE ask, DOUBLE ask_vol, DOUBLE bid, DOUBLE bid_vol). Для всех этих таблиц я использую одну сущность Pair:

@AllArgsConstructor
@Data
@Entity
@Table
public class Pair implements Serializable {

private static final long serialVersionUID = 1L;

private String name;
@Id
@Column(name = "timestamp", nullable = false)
private Timestamp timestamp;
@Basic
@Column(name = "ask", nullable = true, precision = 6)
private double askPrice;
@Basic
@Column(name = "bid", nullable = true, precision = 6)
private double bidPrice;
@Basic
@Column(name = "vol_ask", nullable = true, precision = 4)
private double askVolume;
@Basic
@Column(name = "vol_bid", nullable = true, precision = 4)
private double bidVolume; }

Pair.name связан с именем таблицы. Вот почему все таблицы имеют разные имена и одну сущность.

В DAO я загружаю данные вроде (например, получаю все строки из таблицы с именем «pairName»):

@SuppressWarnings("unchecked")
@Override
public Collection<Pair> getAllPairs(String pairName){
    String hql = String.format("FROM %s ", pairName);
    return (List<Pair>) entityManager.createQuery(hql.toLowerCase()).getResultList();
}

Для отображения имени таблицы я могу использовать аннотацию @SecondaryTables, но количество таблиц довольно большое. Как я могу сказать Hibernate для сопоставления всех таблиц одной сущности? Постскриптум У меня также есть ENUM со всеми именами таблиц. Большое спасибо

...