主键生成方式

     native ------- 根据底层数据库判断自行使用idenyity sequence hilo 等中的一种sequence 时默认的seq名为 hibernate_sequence
uuid  -------- 必须是的字符串,数据库中字段要大于32位
identity --------- 必须是整型 数据库有自增长功能
increment ---------  主键顺序递增推荐使用 可以跨平台
assigned --------- 可以Set Id 所以setId就不能是private的了
seqhilo --------- 支持sequence的hilo算法
foreign ---------- 一对一是主键生成规则
用法如下:
<hibernate-mapping>
<class name="com.pannuo.entity.User" table="tb_user">
    <id name="userId" column="USERID" type="int">
        <generator class="native"/>
    </id>
</class>
</hibernate-mapping>

sequence (数据库支持)(IBM DB2,Oracle)
如下:
<id name="userId" column="USERID" type="int">
    <generator class="sequence">
          <param name="sequence">my_sequence</param>
           <param name="parameters">INCREMENT BY 1 START WITH 1</param>
    </generator>
</id>

hilo 算法(可以使用到任何数据库 算法需要两张表)
如下:
<id name="userId" column="USERID" type="int">
        <generator class="hilo">
                <param name="table">tb_hi</param>
                <param name="column">nextvalue</param>
                <param name="max_lo">0</param>
            </generator>
</id>
tb_hi(nextvalue int)


联合主键
<composite-id>
        <key-property name="userId" column="USERID" type="string"/>
        <key-property name="userName" column="USERNAME" type="string"/>
</composite-id>
Session get(User,UserS)UserS要setId 和 setName
也可以把联合主键拿出来作为一个主键类UserPK配置如下:
<composite-id name="userPK" class="com.pannuo.entity.UserPK"
                                unsaved-value="any">
        <key-property name="userId" column="USERID" type="string"/>
        <key-property name="userName" column="USERNAME" type="string"/>
</composite-id>
Session get(User,PK)PK要setId 和 setName


重写
    @Override
    public boolean equals(Object obj) {
        if (obj == this) {
            return true;
        }
        if (!(obj instanceof UserA)) {
            return false;
        }
        UserA user = (UserA)obj;
        return new EqualsBuilder()
                .append(this.userId, user.getUserId())
                .append(this.userName, user.getUserName())
                .isEquals();
    }
    @Override
    public int hashCode() {
       return new HashCodeBuilder()
               .append(this.userId)
               .append(this.userName)
               .toHashCode();
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值