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

zx_*_*ing 5 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; 
}
Run Code Online (Sandbox Code Playgroud)

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

JMe*_*nik 10

如果您只想在一个对象中对列进行分组以便读取数据,我建议您使用两种方法:

  1. 创建DB VIEW并将其映射为实体.
  2. 使用Result Classes Constructor Expression,它将根据结果查询返回实例化并填充提供的类的对象.

从结构类上的ObjectDB构造函数表达式:

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