2011-08-10 69 views
2

我想知道是否可以從HQL中的名爲參數的對象檢索特定的列。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.name。如果你感興趣的是供應商,爲什麼要使用產品實體? –

回答

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中調用了什麼? –