hibernate自定义主键生成策略:http://blog.csdn.net/ieayoio/article/details/47259833
package cn.silvernet.util;
import java.io.Serializable;
import java.util.Properties;
import java.util.UUID;
import org.hibernate.HibernateException;
import org.hibernate.MappingException;
import org.hibernate.dialect.Dialect;
import org.hibernate.engine.spi.SessionImplementor;
import org.hibernate.id.Configurable;
import org.hibernate.id.IdentifierGenerator;
import org.hibernate.id.PersistentIdentifierGenerator;
import org.hibernate.type.Type;
public class KeyUtils implements IdentifierGenerator,Configurable {
public String classname;
@Override
public Serializable generate(SessionImplementor arg0, Object arg1)
throws HibernateException {
// TODO Auto-generated method stub
return classname+"--"+UUID.randomUUID();//返回自定义生成的主键
}
@Override
public void configure(Type arg0, Properties arg1, Dialect arg2)
throws MappingException {
System.out.println("CATALOG---"+arg1.getProperty(PersistentIdentifierGenerator.CATALOG));
System.out.println("IDENTIFIER_NORMALIZER---"+arg1.getProperty(PersistentIdentifierGenerator.IDENTIFIER_NORMALIZER));
System.out.println("PK---"+arg1.getProperty(PersistentIdentifierGenerator.PK));
System.out.println("SCHEMA---"+arg1.getProperty(PersistentIdentifierGenerator.SCHEMA));
System.out.println("TABLE---"+arg1.getProperty(PersistentIdentifierGenerator.TABLE));
System.out.println("TABLES---"+arg1.getProperty(PersistentIdentifierGenerator.TABLES));
System.out.println("ENTITY_NAME---"+arg1.getProperty(PersistentIdentifierGenerator.ENTITY_NAME));
System.out.println("JPA_ENTITY_NAME---"+arg1.getProperty(PersistentIdentifierGenerator.JPA_ENTITY_NAME));
System.out.println("---------------------------------------");
this.classname = arg1.getProperty("id");
}
}
添加数据输出
CATALOG---null
IDENTIFIER_NORMALIZER---null
PK---id
SCHEMA---null
TABLE---t_info
TABLES---t_info
ENTITY_NAME---cn.silvernet.model.Info
JPA_ENTITY_NAME---Info
---------------------------------------
CATALOG---null
IDENTIFIER_NORMALIZER---null
PK---id
SCHEMA---null
TABLE---t_info
TABLES---t_info
ENTITY_NAME---cn.silvernet.model.Info
JPA_ENTITY_NAME---Info
---------------------------------------
Hibernate: insert into t_info (date, type, title, content, id) values (?, ?, ?, ?, ?)