JPA:如何从多个表的列组合一个实体(不是将实体保存到多个表) [英] JPA: how to composite an entity from columns of multiple tables (not save an entity to mulitple tables)

查看:130
本文介绍了JPA:如何从多个表的列组合一个实体(不是将实体保存到多个表)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个实体:

  @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;

$ b $实体
@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. 创建数据库视图并将其映射为实体。

  2. 使用结果类构造函数表达式,它将实例化并填充提供的类基于结果查询返回。

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


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


I have two entities:

@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 has a foreign key 'tbId' to TableB.id. And TableB has a column named "column1", now I want to get "column1" in TableA entity by some sort of join. What's way I should go in terms of JPA? This is not OneToOne as I don't want to wire entire TableB entity in TableA.

解决方案

If you want to group columns within one object only for reading data I suggest you two ways:

  1. Creating DB VIEW and map it as an Entity.
  2. Using Result Classes Constructor Expression, it will instantiate and populate objects of provided class based on results query return.

From ObjectDB on Result Classes Constructor Expression:

JPA supports wrapping JPQL query results with instances of custom result classes. This is mainly useful for queries with multiple SELECT expressions, where custom result objects can provide an object oriented alternative to representing results as Object[] elements.

这篇关于JPA:如何从多个表的列组合一个实体(不是将实体保存到多个表)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆