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;
   }
}     
4

1 回答 1

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;
   }
} 

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

于 2012-08-09T08:27:33.337 回答