[英]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.