JPA에서 하나의 엔티티에 2 개의 다른 테이블에서 데이터를 가져 오려고했으나 결과가 없습니다.JPA 명명 된 쿼리를 사용하여 여러 테이블에서 단일 POJO로 가져 오기
두 개의 서로 다른 테이블의 데이터를 유지하는 엔티티는 아래와 같다 :
@Data @Entity @JsonSnakeCase
public class WareHouse {
@Id
@GeneratedValue
private long id;
@Column(unique = true)
private String fcId;
@Enumerated(EnumType.STRING)
private FCStatus status;
@OneToMany(cascade = CascadeType.PERSIST, fetch = FetchType.EAGER, mappedBy = "fcId")
private List<WorkingHours> workingHours;
@Enumerated(EnumType.STRING)
private IntegrationType integrationType;
}
다른 엔티티 WorkingHours
는 :
@Data
@Entity
@JsonSnakeCase
public class WorkingHours {
@Id
@GeneratedValue
private long id;
private String fcId;
private LocalDate date;
private DateTime start;
private DateTime end;
}
테이블 WareHouse
및 WorkingHours
는 일대 다 관계가 있고 fcId
은 이들을 조인하는 열입니다.
내 경우에는 WareHouse
세부 사항과 WorkingHours
을 위에서 정의 된대로 단일 엔터티 WareHouse
에 가져와야합니다. 이것을 어떻게 성취합니까?
아래의 명명 된 쿼리는 WareHouse
데이터 만 가져오고 WorkingHours
은 비어 있습니다. 데이터 모델이 잘못 되었습니까? 또는 쿼리가 잘못 되었습니까?
<named-query name="searchByFcId">
<query>
<![CDATA[
select f from WareHouse f where f.fcId = :fc_id
]]>
</query>
</named-query>
괜찮아 보이지만, 당신은'Warehouse' 엔티티와'WorkingHours' 엔티티 모두 FCID대로 어쩌면 그것은 혼란스러워지고, 그래서 실제 매핑 열이 fcId가 아님을 알 수 있습니다. FK가 무엇인지 확인하려면 실제 DB를 확인하십시오. –
fcID는 DB의 외래 키입니다. – gaganbm
하지만 창고의 PK는 그 필드를 참조하는 필드가 아닙니다. –