仅当列存在时才执行hibernate @Column

时间:2011-12-08 18:09:34

标签: java hibernate

我有:

@MappedSuperClass
public class A{

   private int boo;

   @Column(name = boo)
   public int getBoo(){
       return boo;
   }

   public void setBoo(int boo){
       this.boo = boo;
   }  
}

问题是,所有表都可能不存在“boo”列。是否可以注释getBoo(),如果该列不存在,它会将'boo'保持为null?

3 个答案:

答案 0 :(得分:3)

也许在这里使用继承更好,我的意思是class AWithBoo extends A

答案 1 :(得分:1)

明确的答案是:不,你不能这样做。你一定要重新考虑你的设计。为什么不使用继承并将boo移动到派生类?

顺便说一下:如果你可以像你在问题中描述的那样将boo设置为null,那么int boo会随着NPE而爆炸;)

答案 2 :(得分:1)

在工作中,我们遇到了同样的问题:27个国家/地区使用的应用程序。所有这些都需要自己的功能,所以他们自己的数据库列。

在JPA / Hibernate中,这是不可能的。您必须为所有国家/地区共享相同的实体属性,这意味着为许多国家/地区创建无用的列,并按国家/地区处理数据库约束。