hibernateidgenerater.java

来自「管理公司合同」· Java 代码 · 共 77 行

JAVA
77
字号
package	cn.com.juneng.system.common.util;

import java.io.Serializable;
import java.sql.SQLException;
import java.util.Properties;

import org.hibernate.HibernateException;
import org.hibernate.dialect.Dialect;
import org.hibernate.engine.SessionImplementor;
import org.hibernate.id.Configurable;
import org.hibernate.id.IdentifierGenerationException;
import org.hibernate.id.IdentifierGenerator;
import org.hibernate.type.Type;
import org.hibernate.util.PropertiesHelper;

import cn.com.juneng.system.common.COMMON;


public	class	HibernateIDGenerater implements	IdentifierGenerator, Configurable {
	private	String	keyName = "";
	private	static	String	seqTableName="SYS_SEQ";
	private	static	String	STRING_ZERO="00000000000000000000000000000000";
	
	public void configure(Type type, Properties params, Dialect dialect) {
		keyName = PropertiesHelper.getString("name", params, "hibernate_unique_key");
	}

	
	/**
	 * Generate a new identifier.
	 * @param session
	 * @param object the entity or toplevel collection for which the id is being generated
	 * @return Serializable a new identifier
	 * @throws SQLException 
	 * @throws IdentifierGenerationException
	 */
	public Serializable generate(SessionImplementor session, Object object) 
		throws HibernateException{
		/*
		try{
			Connection	newconnection = session.connection();
			Statement statement = newconnection.createStatement();
			ResultSet resultset = statement.executeQuery("SELECT seq_value,prefix,postfix,seq_length FROM "+seqTableName+" where seq_name = '" + keyName.toUpperCase() + "'");
			int	seq_value=0;
			String	value = "";
			if(resultset.next()){
				seq_value=resultset.getInt(1);
				String	prefix=resultset.getString(2);
				if(prefix==null){
					prefix="";	
				}
				String	postfix=resultset.getString(3);
				if(postfix==null){
					postfix="";	
				}
				int		seqLength=resultset.getInt(4);
				value=prefix+STRING_ZERO.substring(0,seqLength-prefix.length()-postfix.length()-(""+seq_value).length())+seq_value+postfix;
			}
			statement.close();

			statement = newconnection.createStatement();
			
			int j = statement.executeUpdate("update "+seqTableName+" set seq_value =seq_value+1 where seq_name = '" + keyName.toUpperCase() + "'");
			if(j != 1){
				throw new SQLException("Error while updating sequence");
			}
			statement.close();
			return	value;
		}catch(SQLException e){
			e.printStackTrace();
		}
		return null;
		*/
		return COMMON.getUUID();
	}
	
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?