我有一个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。非常感谢