【发布时间】:2021-08-03 11:43:40
【问题描述】:
我正在尝试从ListAttribute<Article, PolicyType> 获取属性列表policy_type_id,但我不知道该怎么做。
我想出了一个低效的方法是选择PolicyType 的整个集合,然后过滤它
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);
遗憾的是,hibernate 会生成这样的错误查询
select article1_.article_id as col_0_0_, . as col_1_0_, articlever0_.article_version_id as col_2_0_ 。如您所见,选择中有一个. 会使查询中断(我相信全选)
@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;
}
【问题讨论】:
标签: java hibernate jpa criteria-api