没有从详细信息表中获取特定数据

时间:2016-02-08 18:11:42

标签: java hibernate jpa dropwizard

这是命名查询,用于获取具有特定用户元数据的特定轨道。

"SELECT t FROM Track t LEFT JOIN FETCH t.metadata tm WHERE t.id= :id AND tm.userID = :userID"

在Track实体中,我有@OneToMany关系的元数据列表,其中name = tracks_metadata_join之间的连接表。

//TrackMetadata


 @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, targetEntity=TrackMetadata.class, orphanRemoval = true) 

 @JoinTable(name = "tracks_metadata_join", joinColumns = { @JoinColumn(name = "track_id", 

 referencedColumnName = "id", table = "tracks") }, inverseJoinColumns = @JoinColumn( 

 name = "track_metadata_id", referencedColumnName = "id", table = "tracks_metadata")) 

 @JsonProperty 

 private List<TrackMetadata> metadata = new ArrayList<>();

以上查询的结果是跟踪所有元数据,但我希望使用特定元数据跟踪。像用户特定的。 谢谢!

1 个答案:

答案 0 :(得分:0)

当您阅读Track并初始化其metadata集合时,Hibernate将填充整个集合。这就是Hibernate的工作原理。

如果您只想加载特定的metadata元素,那么您可以使关联双向并仅加载所需的元数据:

select tm from TrackMetaData tm where tm.track.id = :id and tm.userID = :userID