欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

hibernate 自定义UUID(mysql uuid_short)_MySQL

程序员文章站 2022-04-29 19:14:14
...
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
相关标签: hibernate