0

我有一个用例来显示使用完整实体中值的子集的实体列表。我采用的方法是创建一个 EntityList 类,其中只有那些字段出现在列表中。此类映射到与完整实体相同的表,但仅包含字段的子集。

使用 HQL,我想根据完整实体中的字段过滤返回的 EntityList。在下面的示例中,我希望在 Entity 的描述字段(在表中但不在 EntityList 类中)过滤 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中这样做吗?

4

1 回答 1

1

我采用的方法是创建一个 EntityList 类,其中只有那些字段出现在列表中。此类映射到与完整实体相同的表,但仅包含字段的子集。

这是问题的根源。不要那样做。只需使用完整的实体进行查询。加载一些不需要的列通常不会对性能产生任何重大影响。如果是这样,那么只需执行一个查询,该查询只选择您想要的列。

于 2013-05-09T12:30:50.317 回答