2014-10-20 11 views
18

(aktifken 0)düğüm için hiçbir veri türü: org.hibernate.hql.internal.ast.tree.IdentNode HQL Ben hiçbir sınıflandırması eserler almaya çalışırken HQL var

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]); 

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" 
    } 
} 

Sen yüz önceki problemlere başvurabilirsiniz: Ben koşmak zaman ben hatayı

java.lang.IllegalStateException: No data type for node: org.hibernate.hql.internal.ast.tree.IdentNode 
\-[IDENT] IdentNode: 'artifact_id' {originalText=artifact_id} 

sınıflandırılması, tanınmaları tanımını almak d tam olarak ne yapmaya çalıştığımı anlamaya çalışıyorum Quest 1 ve Quest 2

+0

Sınıflandırma tanımını görmek faydalı olurdu – Krever

cevap

37

HQL sorguları Class özelliklerini kullanırken, SQL sorguları sütun adlarını kullanır. Sınıflandırma'dan artifact_id seçiyorsunuz, ancak Sınıflandırma sınıfının 'artifact_id' adında bir özelliği yok. Düzeltmek için HQL'nizdeki sınıf özelliğini kullanın.

SELECT artifactId FROM Classification 
+0

Bunu görmeden önce bunu yaptım ve işe yarıyor. Yine de teşekkürler!!! :) – krs8785