2011-08-10 16 views
2

HQLのparameterという名前のオブジェクトから特定の列を取得できるかどうか疑問に思っていました。HQLオブジェクトの名前付きパラメータ

public class Product 
{ 
    private int id; 
    private Supplier supplier; 

    private String name; 
    private String description; 
    private double price; 

    public Product() 
    { 
     super(); 
    } 

    public Product(String name, String description, double price) 
    { 
     super(); 
     this.name = name; 
     this.description = description; 
     this.price = price; 
    } 

    public String getDescription() 
    { 
     return description; 
    } 
    public void setDescription(String description) 
    { 
     this.description = description; 
    } 
    public int getId() 
    { 
     return id; 
    } 
    public void setId(int id) 
    { 
     this.id = id; 
    } 
    public String getName() 
    { 
     return name; 
    } 
    public void setName(String name) 
    { 
     this.name = name; 
    } 

    public Supplier getSupplier() 
    { 
     return supplier; 
    } 
    public void setSupplier(Supplier supplier) 
    { 
     this.supplier = supplier; 
    } 

    public double getPrice() 
    { 
     return price; 
    } 
    public void setPrice(double price) 
    { 
     this.price = price; 
    } 
} 

私は、製品を作成し、それがその中にサプライヤオブジェクトを持って見ることができるように。 は、だから私はHQLを行うと

String hql = "from Product as product where product.supplier=:supplier"; 
     Query query = session.createQuery(hql); 
     query.setEntity("supplier",supplier); 
     List results = query.list(); 
     displayProductsList(results); 

を呼ぶが、それは単に製品の供給者の名前を取得することが可能であるとき? だけでなく、サプライヤー全体ですか?

+0

。サプライヤの名前のみを選択しますか?または、すべての製品をサプライヤ名で検索したいですか?あるいは、製品を選択したいが、そのすべての属性ではなく、サプライヤの名前を入力するだけです。つまり、すべての製品フィールドと製品のサプライヤ名を取得しますか? –

+0

サプライヤの名前を選択してproduct.supplier.name – Kevin

+0

の場合サプライヤの名前を入力したい場合は、Supplierサプライヤからselect supplier.nameを使用します。興味のあるものすべてがサプライヤーである場合、なぜProductエンティティを使用するのですか? –

答えて

4

はちょうどあなたのクエリにサプライヤーインスタンスを渡すことはありませんが、直接、供給者の名前を渡す:私はあなたが求めているのか理解していない

String hql = "from Product as product where product.supplier.name = :supplierName"; 
Query query = session.createQuery(hql); 
query.setString("supplierName", supplier.getName()); 
List results = query.list(); 
displayProductsList(results); 
+0

興味深いことに私はそれについて考えませんでしたが、私はまだ学んでいます!笑 – Kevin

+0

すごい!ありがとうございました!!! – Kevin

+0

@jbnizetあなたはこれが '=:'かHQLで何が呼び出されているのか教えてください。 –

関連する問題