• hibernate 自定义UUID(mysql uuid_short)


    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: Administrator
    23  * Date: 13-5-8
    24  * Time: 下午6:15
    25  * 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     @Override
    32     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                         sql
    56                 );
    57             }
    58         }
    59     }
    60 
    61     @Override
    62     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() {
  • 相关阅读:
    thinkPHP 远程数据库和远程连接数据库表名大小写混合
    浏览器兼容性的问题
    input 的那些事
    jquery ui draggable失效的问题
    thinkphp在php5.6以上版本显示"No input file specified"
    ajax dataType
    DOM对象的处理
    ubuntu 16.4 中eth0添加ip地址,且可以上网
    linux 安装phpstudy
    select样式清除
  • 原文地址:https://www.cnblogs.com/xujj/p/3067479.html
Copyright © 2020-2023  润新知