【发布时间】:2011-08-10 13:57:26
【问题描述】:
我想知道是否可以从 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);
但是是否可以只获取产品的供应商名称? 而不仅仅是整个供应商?
【问题讨论】:
-
我不明白你在问什么。您想只选择供应商的名称吗?或者您想按供应商名称查找所有产品?或者您想选择产品但只填写其供应商名称而不是其所有属性,即获取所有产品字段 + 产品的供应商名称?
-
尝试选择供应商的名称,因此它将是 product.supplier.name
-
如果您只需要供应商名称,请使用从供应商供应商中选择供应商名称。如果您只对供应商感兴趣,为什么还要使用 Product 实体?
-
因为我想要特定供应商名称的产品。
-
因此,您不想选择供应商的名称。您要选择产品。您想选择哪些产品?那些有给定名称的供应商?
标签: hql