我们在每个客户的单独数据库中有许多客户数据,这些数据库应该具有相同的架构/表结构。但是,有一个表在某些数据库中与其他数据库相比有额外的列。
例如,对于客户A,存在具有列a,b,c,d的表X.对于客户B,存在具有列a,c,d的表X.如果它存在,我需要捕获b但如果不存在则可以忽略它。
有没有办法让JPA忽略这些列,如果它们不存在? @Basic(optional=true)
读取的内容与我想要的完全相同,但文档表明它仅用于其他目的。
目前我按照预期得到了'字段列表'
中的未知列'table.field'P.S。 我不能简单地将列添加到没有它们的数据库中。
答案 0 :(得分:9)
@Basic(optional=true)
只是告诉模式生成器(如果有的话)该字段可以保存空值,而不是该字段可能存在或可能不存在。
我想到的一个可能的问题解决方案是使用类层次结构,使用@MappedSuperclass
而不是@Entity
定义公共父类,然后为每个扩展的数据库定义每个具体类那一个。
使用@MappedSuperclass
,JPA实现不会查找与这些字段匹配的表,因此您甚至可能只有一些空实体类(扩展超类)来定义模型