0
我有一个用例来显示使用完整实体中值的子集的实体列表。我采取的方法是创建一个只有这些字段出现在列表中的EntityList类。这个类映射到与完整实体相同的表,但只有一部分字段。加入HQL标准
使用HQL,我想过滤基于完整实体中的字段返回的EntityList。在下面的例子中,我想EntityList在Entity的描述字段(它在表中,但不在EntityList类中)过滤。
public interface IThreePhaseMotorList {
abstract public Long getId();
abstract public String getMfg();
abstract public Double getPowerUnits();
abstract public Integer getPoles();
}
public interface IThreePhaseMotor extends IMotor {
public abstract Long getId();
public abstract void setId(Long id);
public abstract Integer getVersion();
public abstract void setVersion(Integer version);
public abstract String getIdsrc();
public abstract void setIdsrc(String idsrc);
public abstract String getDescription();
public abstract void setDescription(String description);
public abstract String getManufacturer();
public abstract void setManufacturer(String manufacturer);
public abstract Integer getPoles();
public abstract setPoles(Integer poles);
}
如果我直接写SQL语句对表它看起来像:
Select IThreePhaseMotorList.*
from IThreePhaseMotorList JOIN IThreePhaseMotor ON
IThreePhaseMotorList.id = IThreePhaseMotor.id
where IThreePhaseMotor.Description like 'test%';
反正有没有做到这一点的HQL?
感谢您的建议。它确实会影响性能,因为结果集是通过Web服务发送的,并且必须编入/编出XML。我不想在SQL中编写查询,因为这需要大量维护列映射的代码,因此我的问题。 – 2013-05-09 14:05:37
您不必强制从Web服务返回实体列表。您可以简单地将查询返回的每个实体实例转换为一个DTO对象,该对象只包含要编组并从Web服务返回的数据。我在哪里推荐SQL? HQL可用于返回属性,而不仅仅是实体:例如,从Foo foo加入foo.bar栏中选择foo.id,bar.name。参见http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#queryhql-select – 2013-05-09 14:12:50