Hibernate:在同一列中映射两个属性

时间:2012-08-09 08:04:34

标签: java hibernate mapping

在hibernate中可以使用同一个类的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;
   }
}     

1 个答案:

答案 0 :(得分: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;
   }
} 

在这种情况下,您手动使这些属性始终相同。 (但我不明白,为什么这种冗余很有用?