当前位置:Gxlcms > mysql > hibernate自定义UUID(mysqluuid_short)_MySQL

hibernate自定义UUID(mysqluuid_short)_MySQL

时间:2021-07-01 10:21:17 帮助过:3人阅读

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

人气教程排行