使用hibernate时,你是否遇到如下蛋疼大场景
1@Entity 2@Table(name = "contr_Contract") 3@Cache(usage = CacheConcurrencyStrategy.READ_WRITE) 4@MetaData(value = "合同") 5public class Contract extends BaseEntity<Long> { 6 7 @MetaData(value = "合同编号") 8 @EntityAutoCode 9 private String contrNo; 10 11 @MetaData(value = "合同类型") 12 @EntityAutoCode 13 private ContrTypeEnum contrType; 14 15 @MetaData(value = "销售合同") 16 private SaleContract saleContr; 17 18 @MetaData(value = "代理合同") 19 private ProxyContract proxyContr; 20 21 @MetaData(value = "租赁合同") 22 private LeaseContract leaseContr; 23 24 @MetaData(value = "赠予合同") 25 private GiftContract giftContr; 26...............略......................... 27}
来吧 使用 Hibernate @any
1@Any( metaColumn = @Column( name = "contr_class_type" ), fetch=FetchType.EAGER ,optional=true) 2 @AnyMetaDef( 3 idType = "long", 4 metaType = "string", 5 metaValues = { 6 @MetaValue( value = "SALE", targetEntity = SaleContract.class), 7 @MetaValue( value = "PROXY", targetEntity = ProxyContract.class ), 8 @MetaValue( value = "LEASE", targetEntity = LeaseContract.class ), 9 @MetaValue( value = "GIFT", targetEntity = GiftContract.class ), 10 } ) 11 @JoinColumn( name = "contr_id" ) 12 @Index(name = "contr_id",columnNames={"contr_id"}) 13 public ContractBaseEntity getContr() { 14 return contr; 15 } 16 17 18 19 20 21 22 23 24 25@Any -> 26metaColumn = @Column( name = "contr_class_type" ) 辨别类别 具体存的是 27@AnyMetaDef 定义的 @MeteValue.value 值