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