I'm trying to get a list of property policy_type_id
from ListAttribute<Article, PolicyType>
, but I can't figure out how to do it.
I come up with an inefficient method was select whole Collection of PolicyType
then filter it later
Root<ArticleVersion> a = cq.from(ArticleVersion.class);
Join<ArticleVersion, Article> join1 = a.join(ArticleVersion_.article, JoinType.INNER);
cq.where(getCondition(cb, join1));
cq.multiselect(join1.get(Article_.article_id), join1.get(Article_.policyTypes), a);
Sadly, hibernate generate an error query like this
select article1_.article_id as col_0_0_, . as col_1_0_, articlever0_.article_version_id as col_2_0_
. As you can see, there is a .
in select that make query broken (which I believe select all)
@Entity
@Table(name = "PolicyType", schema = "SM_Request")
@Getter
@Setter
@NoArgsConstructor
public class PolicyType {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int policy_type_id;
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinTable(name = "PolicyTypeArticle", schema = "SM_Request",
joinColumns = @JoinColumn(name = "policy_type_id"), inverseJoinColumns = @JoinColumn(name = "article_id"))
@JsonIgnore
private List<Article> articles;
}