2011-12-07 30 views
0

我想和嵌入型中的屬性查詢:如何指定嵌入屬性中的屬性?

@Embeddable 
class MCValue { 
    Currency currency; 
    BigDecimal value; 
} 

@Entity 
class Record { 
    @Embedded 
    @AttributeOverrides({ 
     @AttributeOverride(name = "currency", column = @Column(name = "price_cc")), 
     @AttributeOverride(name = "value", column = @Column(name = "price")) }) 
    MCValue price; 
} 

然而,在條件查詢,我不知道如何指定他們,還是應該甚至可以支持?

我做過嘗試,但這些都不成功:

Projections.groupProperty("price_cc") 
Projections.groupProperty("price.currency") 
Projections.sum("price") 
Projections.sum("price.value") 

回答

1

語法的確price.currencyprice.value。 Hibernate查詢總是以對象及其字段的形式寫入,而不是以數據庫列的形式寫入。

如果它不起作用,這意味着您的代碼中有其他錯誤。包含完整的代碼和異常堆棧跟蹤。

+0

是的,語法是正確的,這是我的錯誤。但我認爲Hibernate手冊應該提及嵌入式類型的這種用法,否則我不知道它是否被支持。 –

+1

它的確如此:參見http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#queryhql-select:「查詢可以返回任何值類型的屬性,包括組件類型的屬性:[ ...]」。另請參閱http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#queryhql-grouping:「返回聚合值的查詢可以按返回的類或組件的任何屬性進行分組「 –