2012-08-09 66 views
0

在休眠是可以映射相同的列与同一类的2个属性,并有可能参考两个查询? 听起来毫无意义,但这对我必须做的事情是值得的。 在不完整的例子中,我可以标记第二个getter @Transient来保留第二个getter,但是我会失去查询中的别名,所以我想保留“myPropertyAliasOne”和“myPropertyAliasTwo”。休眠:映射在同一列中的两个属性

@Entity 
public MyEntity { 

    private String myProperty; 

    @Column(name="ACTUAL_VALUE") 
    public String getMyPropertyAliasOne(){ 
     return myProperty; 
    } 

    @Transient 
    public String getMyPropertyAliasTwo(){ 
     return myProperty; 
    } 
}  

回答

0

如果你想有一列被映射到两个属性,你为什么不只是将它们映射之一,将其他与第一的价值。

@Entity 
public MyEntity { 

    @Column(name="ACTUAL_VALUE") 
    private String myProperty1; 
    private String myProperty2; 

    public void setMyPropert1(String str){ 
     myProperty1 = str; 
     myProperty2 = str; 
    } 
    public void setMyPropert2(String str){ 
     myProperty1 = str; 
     myProperty2 = str; 
    } 
    public void setMyPropert2(){ 
     myProperty2 = myProperty1; 
    } 
    @Transient 
    public String getMyPropertyAliasOne(){ 
     return myProperty1; 
    } 

    public String getMyPropertyAliasTwo(){ 
     return myProperty2; 
    } 
} 

在这种情况下,你必须手动这些属性总是相同的。 (但我不明白,为什么这个冗余是有用的?