JPA:如何从多个表的列合成实体(不将实体保存到多个表)

时间:2012-07-03 23:29:53

标签: hibernate jpa join

我有两个实体:

@Entity
@Table(name="TableA")
public class TableA {
     @Id
     @Column(name="id")
     long id;

     @Column(name="tableB_id")
     long tbId;

     @Column(name="column1", table="TableB")
     String tbColumn1; 
}

@Entity
@Table(name="TableB")
public class TableB {
     @Id
     @Column(name="id")
     long id;

     @Column(name="column1")
     String column1; 
}

TableA对TableB.id有一个外键'tbId'。并且TableB有一个名为“column1”的列,现在我希望通过某种连接在TableA实体中获得“column1”。在JPA方面我应该采取什么方式?这不是OneToOne,因为我不想在TableA中连接整个TableB实体。

1 个答案:

答案 0 :(得分:10)

如果您只想将一个对象中的列分组用于读取数据,我建议您采用两种方式:

  1. 创建数据库视图并将其映射为实体。
  2. 使用Result Classes Constructor Expression,它将根据结果查询返回实例化并填充提供的类的对象。
  3. 来自结构类的ObjectDB构造函数表达式:

      

    JPA支持使用自定义实例包装JPQL查询结果   结果类。这对于具有多个SELECT的查询非常有用   表达式,其中自定义结果对象可以提供对象   取向将结果表示为Object []元素。