我在HQL上尝试获取没有分类的工件(当active为0时)
artifacts = Artifact.findAll("FROM Artifact WHERE id NOT IN ( SELECT artifact_id FROM Classification WHERE active = 1) AND document_id = :docid",[docid:document.id], [max:limit, offset:startIndex]);
每当我跑步时,我都会收到错误消息
java.lang.IllegalStateException: No data type for node: org.hibernate.hql.internal.ast.tree.IdentNode \-[IDENT] IdentNode: 'artifact_id' {originalText=artifact_id}
分类定义:
class Classification { public static final String USER_DEFAULT = "USER" public static final String USER_SYSTEM = "SYSTEM" TaxonomyNode node String artifactId Boolean active String createdBy String updatedBy Date dateCreated Date lastUpdated static constraints = { node nullable:false, blank:false artifactId nullable:false, blank:false, unique: ['node'] active nullable: false, blank: false createdBy nullable:false, blank:false updatedBy nullable:false, blank:false } static mapping = { id generator:'sequence', params:[sequence:'classification_seq'] artifactId index: 'classify_by_artifact_node' node index: 'classify_by_artifact_node' active defaultValue: "1" } }
您可以参考以前遇到的问题,以了解我到底要执行的任务Quest1和Quest 2
SQL查询使用列名称,而HQL查询使用类属性。您正在从分类中选择artifact_id,但是分类类没有名为“ artifact_id”的属性。要解决此问题,请使用HQL中的class属性。
SELECT artifactId FROM Classification