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() {