【问题标题】:JPA: how to composite an entity from columns of multiple tables (not save an entity to mulitple tables)JPA:如何从多个表的列组合实体(不将实体保存到多个表)
【发布时间】:2012-07-04 10:56:36
【问题描述】:

我有两个实体:

@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 实体。

【问题讨论】:

标签: hibernate jpa join


【解决方案1】:

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

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

来自 ObjectDB 上的结果类构造函数表达式:

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

【讨论】:

    猜你喜欢
    • 2021-03-17
    • 1970-01-01
    • 2013-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多