我可以创建仅具有两个字段的另一个实体以映射到同一张表吗

时间:2019-02-10 00:56:03

标签: hibernate jpa

这是下表,下面只有2个字段:

 customer_order_base { cust_id, cust_lookup_fact }

这已经使用两个字段映射到名为CustomerOrderBase的实体。由于性能原因,我只需要使用这些表中的一部分子集来创建其他几张表的轻型实体模型,其中一些表就有40多个字段。

这些新创建的轻量级实体也指向与重量级模型相同的数据库表。

不幸的是,我现在遇到了上面的表customer_order_base,它只有2个字段。是否可以创建另一个实体以映射到该表?我只想将其用于阅读目的并与其他表连接。

没有此表,我无法执行某些表所需的必要联接。

Is the first case done like this? Using the 2 columns which already exist in the original mapping?

@Immutable
@Entity("DuplicateCustomerOrderBasename=")
@Table("customer_order_base")
public class DuplicateCustomerOrderBase {

  @Id
  @Generator(...)
  BigInteger cust_id;

  @Column(name="cust_fact", insertable="false", updatable="false")
  private String cust_lookup_fact;

}

1 个答案:

答案 0 :(得分:0)

我只知道两种将同一张表映射到不同实体的方法:

第一:

将整个表映射到实体。您可以将更多实体映射到同一张表,但是必须用org.hibernate.annotations.Immutable注释这些(小的)实体。您无法修改这些小实体。

第二:

将继承与继承策略InheritanceType.SINGLE_TABLE结合使用。

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public class Base {

    @Id
    private Long id;
}

@Entity
@DiscriminatorValue("SubBase")
public class SubBase1 extends Base {

    private String value1;
}