• 技术文章 >数据库 >mysql教程

    hibernate 自定义UUID(mysql uuid_short)_MySQL

    2016-06-01 13:35:01原创713
    Hibernate

    bitsCN.com

    UUID生成类

      3 import org.apache.commons.logging.Log; 4 import org.apache.commons.logging.LogFactory; 5 import org.hibernate.HibernateException; 6 import org.hibernate.MappingException; 7 import org.hibernate.dialect.Dialect; 8 import org.hibernate.engine.SessionImplementor; 9 import org.hibernate.exception.JDBCExceptionHelper;10 import org.hibernate.id.Configurable;11 import org.hibernate.id.IdentifierGenerator;12 import org.hibernate.type.Type;13 14 import java.io.Serializable;15 import java.sql.PreparedStatement;16 import java.sql.ResultSet;17 import java.sql.SQLException;18 import java.util.Properties;19 20 /**21  * Created with IntelliJ IDEA.22  * User: Administrator23  * Date: 13-5-824  * Time: 下午6:1525  * To change this template use File | Settings | File Templates.26  */27 public class ShortUUIDIncrementGenerator implements IdentifierGenerator, Configurable {28     private static final Log log = LogFactory.getLog(ShortUUIDIncrementGenerator.class);29     private final String sql = "select uuid_short()";30 31     @Override32     public Serializable generate(SessionImplementor sessionImplementor, Object o) throws HibernateException {33         synchronized (this) {34             try {35                 PreparedStatement st = sessionImplementor.getBatcher().prepareSelectStatement(sql);36                 try {37                     ResultSet rs = st.executeQuery();38                     final long result;39                     try {40                         rs.next();41                         result = rs.getLong(1);42                     } finally {43                         rs.close();44                     }45                     log.debug("GUID identifier generated: " + result);46                     return result;47                 } finally {48                     sessionImplementor.getBatcher().closeStatement(st);49                 }50             } catch (SQLException e) {51                 throw JDBCExceptionHelper.convert(52                         sessionImplementor.getFactory().getSQLExceptionConverter(),53                         e,54                         "could not retrieve GUID",55                         sql56                 );57             }58         }59     }60 61     @Override62     public void configure(Type type, Properties properties, Dialect dialect) throws MappingException {63         //To change body of implemented methods use File | Settings | File Templates.64     }65 66 }

    配置:

        @Id    @GeneratedValue(generator = "shortUid")    @GenericGenerator(name = "shortUid", strategy = "com.up72.msi.util.ShortUUIDIncrementGenerator")    @Column(name = "id", unique = true, nullable = false, insertable = true, updatable = true, length = 19)    public java.lang.Long getId() {

    bitsCN.com
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:hibernate
    上一篇:MySQL5.5存储过程支持limit变量_MySQL 下一篇:mysql主从复制选项设置_MySQL
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• MySQL中关于超键和主键及候选键的区别分析• mysql函数的作用是什么• 怎么解决mysql服务无法启动1069• mysql的case when怎么用• 怎么解决1045无法登录mysql服务器
    1/1

    PHP中文网