Hibernate Annotations @Any 使用场景

Stella981
• 阅读 552

使用hibernate时,你是否遇到如下蛋疼大场景

@Entity
@Table(name = "contr_Contract")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
@MetaData(value = "合同")
public class Contract extends BaseEntity<Long> {
    
    @MetaData(value = "合同编号")
    @EntityAutoCode
    private String contrNo;
    
    @MetaData(value = "合同类型")
    @EntityAutoCode
    private ContrTypeEnum contrType;
    
    @MetaData(value = "销售合同")
    private SaleContract saleContr;
    
    @MetaData(value = "代理合同")
    private ProxyContract proxyContr;
    
    @MetaData(value = "租赁合同")
    private LeaseContract leaseContr;
    
    @MetaData(value = "赠予合同")
    private GiftContract giftContr;
...............略.........................
}

来吧 使用 Hibernate @any 

@Any( metaColumn = @Column( name = "contr_class_type" ), fetch=FetchType.EAGER ,optional=true)
    @AnyMetaDef( 
        idType = "long", 
        metaType = "string", 
        metaValues = {
            @MetaValue( value = "SALE", targetEntity = SaleContract.class),
            @MetaValue( value = "PROXY", targetEntity = ProxyContract.class ),
            @MetaValue( value = "LEASE", targetEntity = LeaseContract.class ),
            @MetaValue( value = "GIFT", targetEntity = GiftContract.class ),
        } )
    @JoinColumn( name = "contr_id" )
    @Index(name = "contr_id",columnNames={"contr_id"})
    public ContractBaseEntity getContr() {
        return contr;
    }









@Any ->
metaColumn = @Column( name = "contr_class_type" ) 辨别类别 具体存的是
@AnyMetaDef 定义的 @MeteValue.value 值
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Easter79 Easter79
3年前
SpringBoot自定义序列化的使用方式
场景及需求:项目接入了SpringBoot开发,现在需求是服务端接口返回的字段如果为空,那么自动转为空字符串。例如:\    {        "id":1,        "name":null    },    {        "id":2,        "name":"x
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Easter79 Easter79
3年前
SpringBoot整合Redis乱码原因及解决方案
问题描述:springboot使用springdataredis存储数据时乱码rediskey/value出现\\xAC\\xED\\x00\\x05t\\x00\\x05问题分析:查看RedisTemplate类!(https://oscimg.oschina.net/oscnet/0a85565fa
Stella981 Stella981
3年前
HTML5新增input标签属性
一.inputtype属性1<formaction""2邮箱<inputtype"email"name""id""<inputtype"submit"value"提交"<br/<br/3手机号码<inputtype"tel"name
Wesley13 Wesley13
3年前
3 OneToMany ManyToMany MappedBy Cascade
1双向1N关联对于1N关联,Hibernate推荐使用双向关联,而且不要让1的一方控制关联关系,而使用多的一方控制关联关系。a.一的一方 表示班级@Entity@Table(name"team_1")publicclassTeam{@Id@Gen
Stella981 Stella981
3年前
SpringBoot自定义序列化的使用方式
场景及需求:项目接入了SpringBoot开发,现在需求是服务端接口返回的字段如果为空,那么自动转为空字符串。例如:\    {        "id":1,        "name":null    },    {        "id":2,        "name":"x
Stella981 Stella981
3年前
Hibernate @Any 及 @ManyToAny 使用教程
前言最好的老师是google,不信你去试下百度一@Any(http://my.oschina.net/u/115936)的使用方法  场景:假设一个车辆类,它可以是个人或者公司拥有:@Entity