[英]Composite primary key table not populating in related entity
我的數據庫包含一個帶有復合主鍵的表,其中一個鍵是外鍵,另一個應該用於從外部服務獲取實體。 代碼看起來有點像這樣:
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@Embeddable
@EqualsAndHashCode
public class PrimaryKey implements Serializable {
@Column(name = "A_ID")
private Long aId;
@Column(name = "F_ID")
private Long fId;
}
@Entity
@Table(name = "JOIN_ENTITY")
@Getter
@Setter
@EqualsAndHashCode
@AllArgsConstructor
@NoArgsConstructor
public class JoinEntity {
@EmbeddedId
private PrimaryKey pk;
@MapsId("aId")
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "A_ID")
private EntityA a;
public getFId() { return pk.getFId(); }
}
@Entity
@Table(name = "ENTITY_A")
@Getter
@Setter
@EqualsAndHashCode
@AllArgsConstructor
@NoArgsConstructor
public class EntityA implements Serializable {
....
@OneToMany(mappedBy = "a", cascade = CascadeType.ALL, orphanRemoval = true)
List<JoinEntity> list = new ArrayList<>();
}
當我保存了一個 JoinEntity 並嘗試從數據庫中獲取 EntityA 時,列表沒有被填充,但是如果我從數據庫中獲取了一些 JoinEntity,相關的 EntityA 就會正確恢復。 我該怎么做才能使用 EntityA 恢復 JoinEntity 列表?
您需要在 EntityA 類中的 @OneToMany 關聯上使用 FetchType.EAGER:
@OneToMany(mappedBy = "a", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.EAGER)
List<JoinEntity> list = new ArrayList<>();
這樣,當您從數據庫中檢索EntityA 時,將自動檢索其JoinEntity s。
解決了添加帶有 id 的 ENTITY_F 表並切換到簡單的多對多關系的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.