Hibernate multimapping - 将表映射到一个实体

时间:2018-04-24 17:08:36

标签: java hibernate spring-boot jpa hql

我有一个spring boot应用程序,并使用hibernate从PostgreSQL DB加载实体。我有很多具有相同结构的表(列:TIMESTAMP 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&#34的所有行):

@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。非常感谢

0 个答案:

没有答案