簡體   English   中英

讀取實體A時讀取實體B中的值(非PK列上的左連接) - JPA 2.0

[英]Reading a value from Entity B when reading Entity A (left join on non PK column) - JPA 2.0

所以我有:

@Entity
public class Entity {

  @EmbeddedId
  private MyId id;

  // not a part of Entity but a part of OtherEntity
  private String lookedUpValue;

}

public class MyId {
   private String firstField;
   private String secondField;
}

表看起來像:

ENTITY
  FIRSTFIELD (PK)
  SECONDFIELD (PK)
  // etc.

public class OtherEntity {
  private String firstField;
  private String value;
}

表看起來像:

OTHERENTITY
  VALUE (PK)
  FIRSTFIELD 
  //etc.
}

當我讀實體時,我希望有一個LEFT JOIN來填充其lookingUpValue字段,其中Entity.id.firstField = OtherEntity.firstField即在SQL中它將是:

Select ENTITY.FIRSTFIELD, ENTITY.SECONDFIELD, OTHERENTITY.VALUE 
from ENTITY
left join OTHERENTITY
ON ENTITY.FIRSTFIELD = OTHERENTITY.FIRSTFIELD

因此實體實例將填充所有這些字段。

這是可能的,還是你推薦另一種方法? 讀取OtherEntity作為每個實體上的一個字段也可以工作 - 但由於MyId沒有映射到OtherEntity,我不知道如何實現。 非常感謝。

一種使用JoinColumn注釋引用實體中的OtherEntity的方法,下面的代碼在Entity中。

@OneToOne(optional="true")
@JoinColumn(name="FIRSTFIELD",referencedColumnName="FIRSTFIELD")
OtherEntity otherEntity;

您可能希望在此處使用JPQL構造函數表達式

基本上,您使用所需的所有字段創建DTO,並在查詢中使用它的構造函數(使用NEW )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM