spring-boot - 查询多对多映射列表的注释计数
问题描述
@Entity
@Table(name="DMS_Document_Class")
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class,property = "docClassindexID")
public class DMSDocumentClass {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="DocumentClass_Index_ID")
private long docClassindexID;
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "DOCCLASS_GROUP",
joinColumns = {@JoinColumn(referencedColumnName ="DocumentClass_Index_ID")}, inverseJoinColumns = {@JoinColumn(referencedColumnName="groupID")})
@JsonManagedReference
private List<DMSGroupBean> groups;
@ManyToMany(mappedBy = "documentClass", fetch = FetchType.LAZY)
private List<DMSDocument> documents;
DMS 文档类
public class DMSDocument {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="Doc_Index_ID")
private long docID;
@OneToOne
@JoinTable(name = "DOCCLASS_DOCS",
joinColumns = {@JoinColumn(referencedColumnName ="Doc_Index_ID")},
inverseJoinColumns = {@JoinColumn(referencedColumnName="DocumentClass_Index_ID")})
@JsonBackReference
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
private DMSDocumentClass documentClass;
下面是我尝试查询注释的存储库类
@Query(value = "SELECT count(D.documents) from DMSDocumentClass D where D.docClassindexID = :classID")
public Long isDocClassHasDocument(@Param("classID") long classID);
当我尝试执行代码片段时
docClassRepo.isDocClassHasDocument(docClassID);
我得到如下输出
select
count(.) as col_0_0_
from
dms_document_class dmsdocumen0_ cross
join
docclass_docs documents1_, dms_document dmsdocumen2_
left outer join
docclass_docs dmsdocumen2_1_
on dmsdocumen2_.doc_index_id=dmsdocumen2_1_.doc_index_id
where
dmsdocumen0_.document_class_index_id=documents1_.document_class_document_class_index_id
and documents1_.doc_index_id=dmsdocumen2_.doc_index_id
and dmsdocumen0_.document_class_index_id=?
这里给出的 count(.) 给出了 SQL 语法错误。我想获取特定文档类的文档计数,但它正在写入。在查询中。我应该通过什么来获取与文档类关联的文档数。
解决方案
您可以使用size()
@Query(value = "SELECT size(D.documents) from DMSDocumentClass D where D.docClassindexID = :classID")
public int isDocClassHasDocument(@Param("classID") long classID);
推荐阅读
- c# - 关于统一制作HUD雷达覆盖的建议
- html - 最小化屏幕时如何阻止盒子碰撞
- ios - 来自 API 的数据未显示在我的 UITableView 中
- javascript - 如何将日期输入与 if 语句中的硬编码日期进行比较?
- scala - Spark:加载具有不同列数的 CSV
- c# - 通过在代码中设置高度和宽度来缩小视图大小不会正确更新
- drupal-7 - 如何从 Drupal 7.x 的块中访问属性
- database - 如何根据另一个已完成表单的 ID 打开第二个表单?
- amazon-web-services - 您可以使用 AWS CLI 执行 AND/OR 类型查询吗?
- xpages - 自动完成似乎没有“接受”